从控制器调用js - 简单搜索表单

时间:2014-02-20 14:15:00

标签: ruby-on-rails ruby

我在modal中有一个搜索表单,如下所示:

<%= 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,是不是有想法?

P.S:我正在使用rails 3.2

1 个答案:

答案 0 :(得分:0)

您缺少index.js.erb中的'escape_javascript'标记

替换:

$("#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