如何解决Rails 6-呼叫不正确的助手
今天,我的应用开始调用命名不正确的助手。
在加载Drills
模型的视图时,将调用Exercise
模型帮助器。这是从今天开始发生的,没有任何改变。
例如,当我加载Drills
的显示视图时:
Rendering drills/show.html.erb within layouts/application
Rendered drills/show.html.erb within layouts/application (Duration: 3.5ms | Allocations: 1551)
Completed 500 Internal Server Error in 63ms (ActiveRecord: 2.8ms | Allocations: 6965)
ActionView::Template::Error (undefined method `created_at' for nil:NilClass):
3: <div class="flex justify-between items-center mb-4">
4: <h1 class="h3"><%= link_to 'Drills',drills_path %> > Drill on <%= @drill.date_held.strftime('%d/%b/%y') %></h1>
5: <%= link_to 'Download PDF',drill_path(@drill,:pdf),class: "btn btn-link" %>
6: <% if can_edit? %><%= link_to 'Edit',edit_drill_path(@drill),class: "btn btn-link" %><% end %>
7: <% if can_destroy? %><%= link_to 'Delete',drill_path,class: "btn btn-danger outline",method: :delete,data: { remote: true,confirm: "Are you sure?" } %> <% end%>
8: </div>
9:
app/helpers/exercises_helper.rb:6:in `can_edit?'
app/views/drills/show.html.erb:6
正在调用错误的控制器?该如何解决?
解决方法
查看有关Rails助手的文档:https://api.rubyonrails.org/classes/ActionController/Helpers.html
除了使用提供的标准模板帮助程序外,强烈建议创建自定义帮助程序以提取复杂的逻辑或可重用功能。默认情况下,每个控制器将包括所有助手。这些助手只能通过#helpers
在控制器上访问
似乎您的can_edit?
中已经有一个名为exercises_helper.rb
的方法。
如果仅在Drill
控制器/视图中需要Drill
助手,则必须遵循以下步骤:
要返回旧行为,请将config.action_controller.include_all_helpers设置为false。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。