2013-10-18 34 views
1

首先,我是rails的新手,所以我仍然掌握着一些東西。添加字段設計使用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 

查看:

undefined method `fName_field' for #<ActionView::Helpers::FormBuilder:0x00000003c89940> 

必須在其中:

<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 :firstName %><br /> 
    <%= f.fName_field :firstName %></div> 

    <div><%= f.label :lastName %><br /> 
    <%= f.lName_field :lastName %></div> 

    <div><%= f.submit "Sign up" %></div> 
<% end %> 
<%= render "devise/shared/links" %> 

然而,當我去查看的頁面我得到這個錯誤我定義了這些方法?還是他們自動定義在別的地方?

感謝您的任何幫助。

回答

0
undefined method `fName_field' 

這意味着你沒有FNAME列在你的數據庫


如果你有機會到你的數據庫,你會看到設計產生的表與一羣列內。默認情況下,這些列僅包含用戶的電子郵件&密碼。要添加更多內容,首先需要將該列添加到數據庫&,那麼您應該可以對其進行操作。

有一個很好的railscast on devise你可以看到如何做到這一點

1

創建這樣一個遷移到姓和名添加到用戶表: -

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

並且將其添加到您的視圖: -

 <div><%= f.label :firstName %><br /> 
      <%= f.text_field :firstName%></div> 
    <div><%= f.label :lastName %><br /> 
      <%= f.text_field :lastName %></div> 

你不能做f。在表格的列中,您可以根據字段的類型執行此操作。

相關問題