undefined方法model_name

时间:2011-06-21 18:48:38

标签: ruby-on-rails ruby

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

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>

这里有什么问题?我从不调用名为“model_name”的方法,这段代码是自动化的,为什么它不起作用呢?

由于

2 个答案:

答案 0 :(得分:20)

尝试将其添加到presences_controller中的new或呈现该表单的其他相关操作中:

#presuming your model is called Presence
@presence = Presence.new 

答案 1 :(得分:5)

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

对于“新”操作 - 您没有正在使用的现有Presence对象(与“show”不同) - 因此您只需要设置一个空白的新对象。< / p>

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

希望有帮助...