2013-04-18 3 views
3

Теперь это действие в этом контроллере вызывается удаленным вызовом ajax.
Только когда был установлен флажок [: звонок], и он отправлен,
Я бы хотел, чтобы он перенаправлялся на ......_ путь со флэш-сообщением.Можно ли использовать redirect_to, когда он вызывается удаленным ajax?

Возможно ли это? если возможно, как?

Контроллер

..... 
if params[:comment][:call] == "1" 
    flash[:notice] = "you checked and submit!" 
    redirect_to ....._path 
else 
    ajax page reload 
end 

вид Форма (пульт дистанционного управления с AJAX)

<%=form_for(([@community, @comment]), :remote => true, :class => 'form') do |f| %> 
    <%= f.check_box :call, :label => 'call' %> call 
     <div class="form-actions"> 
      <div class="input-append"> 
       <%= f.text_field :body, :id => "input", :class => "box" %> 
      <button type="submit" class="btn">submit</button> 
     </div> 
    </div> 
<% end %> 

Комментарий модели

attr_accessible :icon, :call 
.... 
def call 
    @call ||= "0" 
end 

def call=(value) 
    @call = value 
end 

ответ

4

Вам нужно будет написать этот код в js вместо контроллера.

В контроллере:

def action_name 
    .... 
    respond_to do |format| 
    format.js 
    end 
end 

Создайте файл action_name.js.erb и написать этот код:

<% if params[:comment][:call] == "1" %> 
    <% flash[:notice] = "you checked and submit!" %> 
    window.location.href = <%= some_url %> 
<% else %> 
    $("#some_div_id").html("something") //ajax page reload 
<% end %> 

Надеется, что это будет работать для вас.

+0

Большое спасибо. Это прекрасный ответ, который я хотел :) – cat

4

Нет, это невозможно.

Вы должны оказывать JavaScript, который будет изменять расположение окна:

window.location.href = 'http://your new location'; 

Конечно, на ваш взгляд, JS, вы можете использовать динамическое значение для URL с помощью:

window.location.href = '<%= @a_controller_variable %>';