添加字段以使用Rails设计注册4

首先,我是铁杆的新手,所以我仍然掌握着一切。

我正在尝试将两个字段添加到Devise注册页面,第一个名称字段和一个姓氏字段。 我继续前进并更改了视图和控制器以尝试此操作。 它们看起来像这样:

控制器:

class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception before_action :configure_devise_permitted_parameters, if: :devise_controller? protected def configure_devise_permitted_parameters registration_params = [:firstName, :lastName, :email, :password, :password_confirmation] if params[:action] == 'update' devise_parameter_sanitizer.for(:account_update) { |u| u.permit(registration_params << :current_password) } elsif params[:action] == 'create' devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(registration_params) } end end end 

视图:

 

Sign up

resource_name, :url => registration_path(resource_name)) do |f| %>

true %>




但是,当我去查看页面时,我收到此错误:

 undefined method `fName_field' for # 

我必须在哪里定义这些方法? 或者它们是否在其他地方自动定义?

谢谢你的帮助。

使用“f.something”,您只需定义表单中字段的类型即可。 尝试类似的东西

 <%= f.text_field :lastName %> 

这应该工作。

您可以在此处阅读有关可用字段类型的信息: http : //apidock.com/rails/ActionView/Helpers/FormHelper/form_for

创建这样的迁移,为users表添加名字和姓氏: –

 class AddFirstnameAndLastnameToUsers < ActiveRecord::Migration def change add_column :users, :firstName, :string add_column :users, :lastName, :string end end 

并将此添加到您的视图中: -

  
<%= f.label :firstName %>
<%= f.text_field :firstName%>
<%= f.label :lastName %>
<%= f.text_field :lastName %>

你不能做f。 在表的列中,您可以在字段的类型上执行此操作。

 undefined method `fName_field' 

这意味着您的数据库中没有fName列


如果您可以访问您的数据库,您将看到Devise生成一个包含一堆列的表。 默认情况下,这些列仅包含用户的电子邮件和密码。 要添加更多内容,首先需要将列添加到数据库中,然后您应该能够执行您正在使用的操作。

在设计上有一个很好的轨道广播你可以看到如何做到这一点