【问题标题】:undefined method `model_name' for NilClass:Class - ruby on rails applicationNilClass:Class 的未定义方法“model_name” - ruby​​ on rails 应用程序
【发布时间】:2013-06-27 00:50:21
【问题描述】:

我有一个用户提交电子邮件的表单,它在视图中:views/about/home.html.haml

表格如下所示:

 = form_for @waitinglist do |f|
   = f.email_field :email, placeholder: "Enter your email", autofocus: :true
   = button_tag class: "btn btn-large btn-block btn-primary sigin-button" do
     %p Put me on the waiting list

控制器如下所示:

class WaitinglistsController < ApplicationController
  def create
    @waitinglist = Waitinglist.new(params[:waitinglist])
    if @waitinglist.save
        redirect_to root_path
    else
        render action: :new
    end
  end

  def new
    @waitinglist = Waitinglist.new
  end
end

模型如下所示:

class Waitinglist < ActiveRecord::Base
  attr_accessible :email
  validates :email, presence: true
end

但我收到此错误:

undefined method `model_name' for NilClass:Class

怎么了?

【问题讨论】:

  • 应该可以工作..请发布更多代码
  • 你必须在views/about/home.html.haml对应的控制器动作中定义@waitinglist
  • @Mischa 你的意思是在 about 控制器中?我应该如何定义他们?
  • 是的,如果它具有呈现views/about/home.html.haml 的操作,那么您必须在那里定义@waitinglist。您应该添加@waitinglist = Waitinglist.new

标签: ruby-on-rails ruby-on-rails-3 haml


【解决方案1】:

你应该添加

@waitinglist = Waitinglist.new

在您的AboutControllerhome 方法中。你的表单尝试使用@waitinglist,但如果你没有定义它,它将是nil,并且会抛出这个异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多