2014-04-17 42 views
0

我正在試圖在rails中創建一個新用戶。新用戶表單上有用戶名,電子郵件,密碼和密碼確認字段。當我點擊網頁上的創建用戶按鈕時,new_user表單會刷新並且用戶不會被添加到數據庫中。Rails註冊

下面是在認證控制器我的註冊方法

def register 
    @user = User.new(params[:user]) 

    if @user.valid? 
    @user.save 
    session[:user_id] = @user.id 
    flash[:notice] = 'Welcome.' 
    redirect_to sign_in_url 
    else 
    render :action => "new_user" 
    end 

代碼這是我的new_user形式:

<p>Sign Up</p> 
<%= form_for @user, :as => :user, :url => new_user_path, :method => :put do |f| %> 

<p> 
    <%= f.label 'username:' %><br/> 
    <%= f.text_field :username %> 
    <%= show_field_error(@user, :username) %> 
</p> 
<p> 
    <%= f.label 'email:' %><br/> 
    <%= f.text_field :email %> 
    <%= show_field_error(@user, :email) %> 
</p> 
<p> 
    <%= f.label 'password:' %><br/> 
    <%= f.password_field :password %> 
    <%= show_field_error(@user, :password) %> 
</p> 
<p> 
    <%= f.label 'password confirmation:' %><br/> 
    <%= f.password_field :password_confirmation %> 
    <%= show_field_error(@user, :password_confirmation) %> 
</p> 
<p> 
    <%= f.submit 'Sign Up' %>&nbsp;&nbsp;&nbsp; 
    <%= f.submit 'Clear Form', :type => 'reset' %> 
</p> 

可有人點我在正確的方向?

+0

是在路由中定義的這個路由,用你的路由表更新qsn。 – Bijendra

回答

0

如果您在routes.rb文件中定義了resources :users,則表單中的new_user_path引用的網址爲User#new。如果您在路線文件中定義了register,則需要將new_user_path替換爲register_user_path。不過,通過運行rake routes仔細檢查路徑。

從我所看到的,沒有必要使用有註冊行爲。在你的情況下,使用REST風格的動作newcreateindexshow,edit,updatedestroy會更有意義,因爲你的邏輯遵循它們背後的直覺。 Rails使這個約定容易遵循。有關更多信息,請參閱路由Rails指南here