Rails 3 - 渲染 js.erb 的局部视图

4
我有一个简单的搜索表单,看起来像这样:
app/views/search/index.html.erb
<%= form_for @search, :as => :search, :remote => true, :url => {:action => "query"}, :html => {:id => 'search-form'} do |f| %>
  ...
<% end %

<div id="search-results"></div>

*app/controllers/search_controller.rb*

def index
  @search = SearchCriteria.new
end

def query
  @search = SearchCriteria.new(params[:search])

      # otherwise, perform search...
  @summaries = do_search @search
  respond_to do |format|
    format.js
  end
end

我有一个js.erb模板: *app/views/search/_query.js.erb*
$('#search-results').update("<%= escape_javascript(render(@summaries)) %>");

然而,我没有看到任何东西放入“search-results” div中。我需要一些模板来渲染“@summaries”吗?如果是这样的话,它会被命名为什么,放在哪里(例如app/views/search)?(我正在使用jQuery和Rails 3)
谢谢。

1
我不认为jQuery有一个.update方法。尝试使用.html?Firebug在控制台中是否抛出任何错误? - Dogbert
我切换到了 .html,但没有任何区别。"render(@summaries)" 会渲染什么?我猜测我缺少了对应的视图或局部视图。 - codecraig
1个回答

10

你应该重命名你的模板文件:

app/views/search/_query.js.erb => *app/views/search/query.js.erb

下划线是不必要的


1
是的,这很有帮助。然后我更新了query.js.erb文件来实现这个功能:$('#search-results').html("<%= escape_javascript(render(:partial => 'summaries')) %>");然后我创建了一个app/views/search/_summaries.html.erb文件。 - codecraig
嗨,我想知道这句话的意思:“Rails可以在erb文件中呈现js”?这是指“ujs”吗? - why

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接