好吧,所以我试图添加一个名称条目到我的登录页面使用设计,这里是我到目前为止在视图/ devise/new.html.erb文件。添加名称设计的用户登录抛出一个NoMethodError
<h2>Sign up</h2>
<div class="row">
<div class="col-md-8">
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, autofocus: true, class: 'form-control', placeholder: "Enter name" %>
</div>
<div class="form-group">
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control', placeholder: "Enter email" %>
</div>
<div class="form-group">
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control', placeholder: "Enter password" %>
</div>
<div class="form-group">
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation, class: 'form-control', placeholder: "Enter password confirmation" %>
</div>
<div class="form-group">
<%= f.submit "Sign up", class: 'btn btn-success' %>
</div>
<div class="form-group">
<%= render "devise/shared/links" %>
</div>
<% end %>
</div>
</div>
我知道你必须扩展Devise允许的属性,我将这个代码添加到我的应用程序的控制器。
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :name
end
我也做了一定补充:这里名更改为DB /迁移/ devise_create_users
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Customization
t.string :name
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
我确信耙分贝:迁移和db:复位,但我发现了这个错误,这对我没有意义。
Started GET "https://stackoverflow.com/users/sign_up" for 127.0.0.1 at 2014-12-06 15:07:31 +0300
ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
Processing by Devise::RegistrationsController#new as HTML
Rendered devise/registrations/new.html.erb within layouts/application (235.8ms)
Completed 500 Internal Server Error in 251ms
ActionView::Template::Error (undefined method `name' for #<User:0x007fe82225b928>):
6: <%= devise_error_messages! %>
7: <div class="form-group">
8: <%= f.label :name %>
9: <%= f.text_field :name, autofocus: true, class: 'form-control', placeholder: "Enter name" %>
10: </div>
11: <div class="form-group">
12: <%= f.label :email %>
app/views/devise/registrations/new.html.erb:9:in `block in _app_views_devise_registrations_new_html_erb__738282397383517404_70317490899320'
app/views/devise/registrations/new.html.erb:5:in `_app_views_devise_registrations_new_html_erb__738282397383517404_70317490899320'
Rendered /Users/clydiscope/.rvm/gems/ruby-2.1.5/gems/actionpack- 4.1.8/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (0.9ms)
Rendered /Users/clydiscope/.rvm/gems/ruby-2.1.5/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.9ms)
Rendered /Users/clydiscope/.rvm/gems/ruby-2.1.5/gems/actionpack-4.1.8/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (7.3ms)
任何人都可以帮忙吗?
你你第一次迁移之后编辑迁移的文件? – 2014-12-06 13:19:08
不,但我在编辑并保存文件后多次迁移。 – 2014-12-06 13:33:31