gpt4 book ai didi

javascript - ruby rails : error when using unobtrusive JavaScript to update partial

转载 作者:行者123 更新时间:2023-11-30 17:43:31 26 4
gpt4 key购买 nike

我正在使用 Rails 3.2.13,我正在尝试在创建“子”项目后更新“摘要”部分。

我有一个模板和模板任务,我想做的是更新“显示” View 中的部分内容,这是一个摘要,表明有多少任务分配给了模板。我在模板任务的 create.js.erb 中执行此操作。

_template-summary.html.erb 的内容如下:

<div id="template-summary-details">
<table class="table table-striped">
<tbody>
<tr>
<td><span class="fa fa-th-list"></span> No. of tasks</td>
<td><%= @template.templatetasks.count %></td>
</tr>
<tr>
<td><span class="fa fa-clock-o"></span> Total task days</td>
<td>
<%= @template.templatetasks.sum(:days) %>
</td>
</tr>
<tr>
<td><span class="fa fa-check-square-o"></span> No. of checklists</td>
<td>
<%= @template.templatetasks.count(:checklist_id) %>
</td>
</tr>
</tbody>
</table>
</div>

create.js.erb 的内容如下:

<% @template = Template.where("id = ?", @templatetask.template_id?) %>

$("#template-summary-details").replaceWith("<%= escape_javascript(render partial: "templates/template-summary", locals: {template: @template}) %>");

<% if @templatetask.parent_id? %>
$('#templatetasks'+<%= @templatetask.parent_id %>).prepend('<%= j render(@templatetask) %>');
<% else %>
$('#templatetasks').prepend('<%= j render(@templatetask) %>');
<% end %>

问题是我收到以下错误:

undefined method `where' for ActionView::Template:Class

我也尝试过使用 find 但也没有成功。

在创建模板任务期间,我还能如何将 @template 传递给部分?

最佳答案

您的第一个问题是 Rails 类 ActionView::Template 之间存在名称冲突和您的 Template 模型类。您可以通过将模型类称为 ::Template(顶级 Ruby 类)来解决这个问题。例如

<% @template = ::Template.where("id = ?", @templatetask.template_id).first %>

但这只是进行主键查找的一种方式,使用 find 更简单:

<% @template = ::Template.find(@templatetask.template_id) %>

更简单的是,如果您已经设置了从 TemplateTaskTemplatebelongs_to 关联,您可以直接引用相关对象:

<% @template = @templatetask.template %>

这可能会让你走得更远,但如果你想让你的部分更可重用,最好避免让它们引用实例变量(例如 @template)。相反,partial 应该引用一个本地 template 变量,您通过 locals 散列(您已经在做)传递给 render 方法。

关于javascript - ruby rails : error when using unobtrusive JavaScript to update partial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20593923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com