undefined方法model_name

Bv2*_*202 7 ruby ruby-on-rails

我正在使用脚手架创建的默认代码.我没有改变任何事情.

Showing app/views/presences/_form.html.erb where line #1 raised: 
undefined method `model_name' for NilClass:Class

1: <%= form_for(@presence) do |f| %>
2:   <% if @presence.errors.any? %>
3:     <div id="error_explanation">
4:       <h2><%= pluralize(@presence.errors.count, "error") %> prohibited this presence from being saved:</h2>
Run Code Online (Sandbox Code Playgroud)

这有什么不对?我永远不会调用名为"model_name"的方法,这段代码是自动化的,为什么它不起作用?

谢谢

Zab*_*bba 20

尝试添加这对您presences_controllernew所呈现的形式或其他相关行动:

#presuming your model is called Presence
@presence = Presence.new 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这很有效.我仍在尝试了解RoR的工作原理,但这些错误信息并不是很有用. (2认同)

Tar*_*ast 5

视图(和form_for方法)期望在@presence变量中实际具有真实的Presence模型.像这样的@ -variable从控制器传递,这意味着你必须在控制器动作中设置它.

在"新"操作的情况下 - 您没有正在使用的现有Presence对象(不像是"show") - 因此您只需要设置一个空白的新对象.

form_for方法将采用这样的Presence对象,并且:如果它是来自db的现有对象,将创建正确的POST路由以更新它.但如果它是一个新的空的,将创建一个正确的路径来创建一个新的.

希望有帮助......