2014-02-20 3 views
0

У меня есть форма поиска в modal, как показано ниже:вызова JS от контроллера - простой формы поиска

<%= form_tag "/search", :remote => true, :method => :get do %> 
    <input type="text" name="search_name"> 
    <button type="submit">Search</button> 
<% end %> 

<div id="channels"></div> 

выше форма вызов ниже методы в моем контроллере:

#my_controller.rb: 

def search 
    parsed_json = JSON.parse(@json_string) # fetch some json data 
    render do |index| 
    ndex.html {} 
    index.js {} 
    end 
end 

так я ожидаю выше метод поиска, чтобы сделать ниже index.js.erb от app/view/my_controller обновить мой div:

$("#channels").html("<%= render :partial => "channels" %>") 

После нажатия кнопки поиска просмотр не может быть обновлен, потому что index.js.erb не может быть вызвана, любая идея?

PS: Я использую rails 3.2

ответ

0

Вы пропускаете '' escape_javascript тег в index.js.erb

Заменить:

$("#channels").html("<%= render :partial => "channels" %>") 

С:

$("#channels").html("<%= escape_javascript render :partial => "channels" %>") 

Дополнительную информацию об этом использовании: Why escape_javascript before rendering a partial?

Кроме того, я могу ошибаться, но это кажется немного странным:

render do |index| 
    index.html {} 
    index.js {} 
end 

Если это не будет:

respond_to do |format| 
    format.html {} 
    format.js { render 'index.js.erb' } 
    #    ^If you dont write this, it will look for search.js.erb in your views dir 
end 
Смежные вопросы