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

那里没有电子邮件列,而且看起来您没有正确设置用户表,因为它所拥有的只是对用户的引用和默认时间戳。

我会运行rake db:rollback以删除 users 表,然后在再次迁移之前将迁移编辑为如下所示:

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 回答