2012-05-14 81 views
1

构建基本表单以创建新数据时收到以下错误。当我点击提交,我得到simple_form_for NilClass的未定义方法`model_name':类

simple_form_for为NilClass未定义的方法`MODEL_NAME”:

**_form.html.erb** 
<%= simple_form_for(@calls) do |f| %> 
    <%= f.error_notification %> 
    <%= f.input :caller_name %> 
    <%= f.input :caller_phone, hint: "xxx-xxx-xxxx" %> 
    <%= f.input :caller_address %> 
    <%= f.input :primary_diagnosis %> 
    <%= f.error :base %> 
    <%= f.button :submit %> 
<% end %> 

**calls_controller.rb** 
def create 
    @call = Call.new(params[:call]) 

    respond_to do |format| 
     if @call.save 
     format.html { redirect_to @call, notice: 'Call was successfully created.' } 
     format.json { render json: @call, status: :created, location: @call } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @call.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

**new.html.erb** 
<h1>New Call</h1> 

<%= render 'form' %> 

<%= link_to 'Back', calls_path %> 

我在一个有点丢在这里,因为我已经跟着轨命名约定,甚至用同样的结果用脚手架试过。已经重新启动了webrick。帮帮我?

回答

5

你问一个simple_form_for(@calls)

然而,你的控制器创建@call

变化

<%= simple_form_for(@calls) do |f| %> 

<%= simple_form_for(@call) do |f| %> 
0

我想你必须在控制器中定义一个“新”方法。只需创建一个新的空实例并将其返回给视图。

def new 
    @call = Call.new 
end 

“创建”方法是POST操作的响应,当你发回一个形式的内容。然后,您从接收到的参数中创建一个新实例并将其保存到数据库中。

相关问题