今天我的应用程序开始调用名称错误的助手。
加载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 在控制器上访问
您的exercises_helper.rb
中似乎已经有一个名为can_edit?
的方法。
如果您只想在Drill
控制器/视图中使用Drill
助手,则必须遵循以下步骤:
若要返回旧行为,请将config.action_controller.include_all_helpers设置为false。