2

開発中の Rails アプリでいくつかの問題が発生しています。 https://github.com/plataformatec/simple_formの simple_form gem を使用していますが、実行後rails serverに次のエラーが表示されます。

undefined method `email' for #<User:0x007f7c9888c950>

抽出されたソース (7 行目あたり):

<%= simple_form_for User.create, :input_html => { :class => 'form-horizontal hide', :id => 'dataWithinSignIn'} do |f| %>
 <div class="control-group">
  <div class="controls">
#7 <%= f.input :email, :id => 'inputEmail', :placeholder => 'Email' %>
  </div>
  <div class="controls">
   <%= f.input :password, :id => 'inputPassword', :placeholder => 'Password' %>

私のソース コードはブランチのhttps://bitbucket.org/jasonriddle/stubmoneytest-repoにあります。答えを求めてインターネットで何時間も検索しましたが、答えが見つかりませんでした。

4

2 に答える 2

3

これは私があなたのコードで見る唯一の移行です:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.references :user
      # Same as saying
      # t.integer :user_id (Foreign Key Column)
      # t.string  :imageable_type (Type Column)
      t.timestamps
    end
  end
end

そこにはメール列がなく、ユーザーとデフォルトのタイムスタンプへの参照しかないため、ユーザーテーブルを正しく設定したようには見えません。

users テーブルを削除するために実行rake db:rollbackし、移行を次のように編集してから、再度移行します。

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :email
      t.string :password # or :encrypted_password
      t.timestamps
    end
  end
end

また、通常、パスワード列に次のような名前を付けてから、ユーザー モデルでencrypted_password名前を付けた仮想属性を設定します。password仮想属性は、フォームで使用されるものです。(あなたの例のsimple_formコードのように)

于 2012-10-21T02:12:34.397 に答える
0

rails g migration add_email_to_users emailメール属性が欠落しているため、移行を実行するだけで問題が解決するはずです

次に実行しますrake db:migrate

于 2012-10-21T03:13:52.713 に答える