【问题标题】:Rails 3 - render partial js.erbRails 3 - 渲染部分 js.erb
【发布时间】:2023-03-11 09:00:03
【问题描述】:

我有一个简单的搜索表单,看起来像:

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)) %>");

但是,我没有看到任何内容被放入“搜索结果”div。我需要某种模板来呈现“@summaries”吗?如果是这样,它将被命名为什么以及我将它放置在哪里(即 app/views/search?)(我正在使用 jquery 和 rails 3)

谢谢。

【问题讨论】:

  • 我不认为 jQuery 有 .update 方法。试试.html? Firebug 会在控制台中抛出任何错误吗?
  • 我切换到 .html,没有区别。 “渲染(@summaries)”将渲染什么?我猜我错过了一个视图或部分视图。

标签: jquery ruby-on-rails-3


【解决方案1】:

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

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

下划线是不必要的

【讨论】:

  • 是的,这有帮助。然后我更新了 query.js.erb 来做到这一点: $('#search-results').html(" 'summaries')) %>");然后我创建了一个 app/views/search/_summaries.html.erb
  • 嗨,我想知道这是什么意思:“rails 可以在 erb 文件中渲染 js”?这是否意味着“ujs”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 2012-10-16
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2012-07-29
相关资源
最近更新 更多