我已经在这里查看了其他答案,但尚未找到答案。我正在创建一个Rails 4应用程序,允许用户登录并创建配置文件。我正在使用Devise gem进行用户身份验证。
我想要做的是让用户在注册过程中输入他们的名字和他们自己的描述。提交表单时,数据库也将使用此信息进行更新。这就是我所做的:
1)我在用户表中运行了迁移以创建新列“name”和“description”
2)我运行了rails generate devise:views。这允许我访问设计>视图>注册> new.html.erb,其中我包含“名称”标签和字段。我只是用其他标签和字段作为指导。我现在得到一个错误,说name_field方法是未定义的。其他像email_field和password_field定义在哪里?
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.label :name %><br />
<%= f.name_field :name %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
<%= render "devise/shared/links" %>
任何有助于实现这项工作的帮助我都会非常感激。
答案 0 :(得分:0)
Rails表单对象上没有表示name_field
的方法。 name_field
不是有效的HTML表单输入类型。你找到并替换了吗?你应该改变
<%= f.name_field :name %>
到
<%= f.text_field :name %>
覆盖configure_permitted_parameters
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, rest_of_user_attrs) }
# you control which attributes can be updated or used for sign in here
end
end
答案 1 :(得分:0)
@ user2623706您是否为强参数配置了设计。这可能是问题所在。