0

私はしばらくこれを見つめていましたが、Google はあまり役に立たなかったので、皆さんに助けを求めています. これは非常に簡単な修正です。

このコードの目的は、サインアップ フィールドから電子メール アドレスを取得し、それをデータベースに配置することです。

必要なもののほとんどはそこにあると思いますが、このエラーが発生しています:

undefined method model_name for NilClass:Class

私の home.html.erb ファイルには次のものが含まれています。

    <%= form_for(@signup) do |f| %>
        <div class="field">
            <%= f.label :email %><br />
            <%= f.text_field :email %>
        </div>

        <div class="actions">
            <%= f.submit "Enter" %>
        </div>
    <% end %>

モデルには以下が含まれます。

class Signup < ActiveRecord::Base

  attr_accessible :email
     email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
     validates(:email, :presence => true,
                    :length => {:maxiumum => 40},
                    :format => {:with => email_regex})

end

コントローラーには以下が含まれます。

class SignupController < ApplicationController

  def show
  end

  def new
    @signup = Signup.new
  end

  def create
    @signup = Signup.new(params[:id])
    if @signup.save
    else
      render 'new'
    end
  end

end
4

2 に答える 2

2

この問題は、form_for で使用しているインスタンス変数が ActiveRecord オブジェクトに設定されていないことが原因である可能性が最も高いです。「新しい」アクションで正しく設定しているように見えますが、フォームが「home.html.erb」にあると言及しているため、正しいテンプレートをレンダリングしていることは明らかではありませんか?

いずれにせよ、form_for で使用しているものはすべて有効な ActiveRecord オブジェクトに設定されていることを確認してください。問題が解決される可能性があります。

さらに、作成アクションを変更して、フォームのすべてのパラメーターを使用することもできます。

@signup = Signup.new(params[:signup])
于 2012-05-05T02:10:22.927 に答える
1

homeこれをページ コントローラーのアクションに追加します。

@signup = Signup.new

エラーの理由は、フォームで使用しているが、コントローラー アクション@signupで定義していないことです。show

于 2012-05-05T02:04:47.057 に答える