【问题标题】:Rendering a partial with a jquery click on rails用jquery点击rails渲染部分
【发布时间】:2017-07-26 13:02:24
【问题描述】:

我是 Rails 新手。我几乎阅读了过去打开的所有帖子,并且我尝试了这里提到的很多东西,它仍然不起作用。我的 Rails 版本是 4.2。我收到此错误:

#

这是我要单击以呈现我的部分的链接:

<tbody>
    <%- @batches.each do |batch| -%>
      <tr>
        <td id="report-show-link"><%= link_to '#', :remote => true do %>
           Batch <%= batch.id %>
        <% end %></td>

我读到的其中一件事是保持 xxx.js.erbxxx.controller.rb_xxx.html.erb 文件名相同,我做到了。 但是,我不确定在哪里保存我的 xxx.js.erb 文件。如果我将它放在与我的局部视图文件相同的视图文件中,rails 将无法识别它。截至目前,我的xxx.js.erb 文件位于assets/javascripts 下。

我的 xxx.controller.rb 中有两种方法(索引和创建)

我放了

respond_to do |format|
  format.js {render layout: false}
end

在我的创建方法的顶部。

这是我的 jquery 调用:

    $("#report-hide").prepend("<%= escape_javascript(render :partial => 'batches')%>")

再一次;我的文件具有相同的名称:_batches.html.erb、batches.js.erb 和 bathces.rb,我在控制器顶部添加了 respond_to :js。谢谢!

【问题讨论】:

    标签: jquery ruby-on-rails render partial renderpartial


    【解决方案1】:

    .js.erb 文件是一个渲染模板。它与您的主 .html.erb 文件位于同一文件夹中。尝试使用 respond_with 而不是 respond_to,看看这是否有助于您进行渲染。

    您收到“未定义的方法 'render'”错误的可能原因正是因为您的 .js.erb 文件位于错误的位置。 app/assets 下的 JS 代码是静态编译的,在这种情况下,您无法访问 Rails 视图辅助方法(render 就是其中之一)。视图文件夹中包含的 .js.erb 代码会动态地呈现以响应请求,并且可以访问 Rails 视图辅助方法。

    【讨论】:

    • 我将 respond_to 更改为 respond_with,现在我得到 undefined method `respond_with' for....* 再次,我将 js.erb 文件放在同一个文件中查看我的部分文件夹。我的 js.erb 文件在 javascript 文件夹中不起作用。它不会给出任何错误,但它不会做任何事情。
    【解决方案2】:

    如果控制器/模型名为 Batch 和 BatchesController,则模板应位于 views/batches/* 中。所以:

    views/batches/index.html 和 js views/batches/create.js.erb

    为了澄清,模板名称应该与控制器上的操作方法相同。因此,如果您有带有索引方法的 BatchesController。那么默认情况下,rails 将调用views/batches/index.html。如果你想从你的 create 方法中调用一个 js 模板,那么像你在 BatchesController create 方法中那样放置 respond_to 方法将调用 views/batches/create.js.erb

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多