我正在使用脚手架创建的默认代码。我没有改变任何事情。
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”的方法,这段代码是自动化的,为什么它不起作用呢?
由于
答案 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路由以更新它。但如果它是一个新的,空的,将创建一个正确的路径来创建一个新的。
希望有帮助...