Ruby rails undefined 方法 'name' @user



我在尝试显示注册表单时会出现错误:

undefined method `name' for `#<User id: nil, created_at: nil,
updated_at: nil, email: nil>

提取的源(周围#8):

6 7 8 9 10 11

在用户/new.html.erb中

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@user) do |f| %>
      <%= f.label :name %>
      <%= f.text_field :name %>
      <%= f.label :email %>
      <%= f.email_field :email %>
      <%= f.label :password %>
      <%= f.password_field :password %>
      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation %>
      <%= f.submit "Create my account", class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

如果我评论一行,则可以。我已经在模型中定义了名称字段:

db/migrate/.... create_users.rb

class CreateStructure < ActiveRecord::Migration
  def change
    def up
        drop_table :users
        create_table :users do |t|
            t.integer :id
            t.string :name
            t.string :email
            t.string :password
        end
        create_table :model_forums do |t|
            t.integer :id
            t.string :name
        end
    end
  end
end

,但它不会创建我要求的字段,并且只有诸如create_at和updated_at。

之类的旧字段。

migation文件有问题,请参阅活动记录迁移

class CreateStructure < ActiveRecord::Migration
    def up
        create_table :users do |t|
            t.integer :id
            t.string :name
            t.string :email
            t.string :password
        end
        #It is not recommended to create two tables in one migration file.
        create_table :model_forums do |t|
            t.integer :id
            t.string :name
        end
    end
    def down
        drop_table :users
    end
end

然后运行 rake db:rollback丢弃旧用户表,重新运行rake db:migrate

相关内容

最新更新