2014-02-24 63 views
1

我似乎看到了關於如何使用devise在主頁面(static_pages#home)上爲用戶提供註冊表單的問題,但找不到用於只使用Rails。主頁上的Rails註冊表格

我這是我在我的主頁形式:

<h2>Sign Up</h2> 
    <%= form_for(@user) do |f| %> 
     <br> 

     <%= f.label :email %> 
     <%= f.text_field :email %><br> 

     <%= f.label :password %> 
     <%= f.password_field :password %><br> 

     <%= f.label :password_confirmation, "Confirm password" %> 
     <%= f.password_field :password_confirmation %><br> 

     <%= f.submit "Sign up", class: "btn btn-large btn-primary" %> 
    <% end %> 

然而,當我提交表單,用戶數據不會被保存(出於某種原因,電子郵件的屬性和口令不從表格中獲取)。我已經在home動作中實例化了@user變量,所以我不確定爲什麼這不起作用。

class StaticPagesController < ApplicationController 
    def home 
     # For future where sign-up page is on home page. 
     @user = User.new 
    end 
end 

任何幫助,將不勝感激。謝謝!

回答

1

首先,我會高度推薦使用Devise。處理用戶認證是棘手的業務,尤其是爲了保持安全。

其次,您需要有一個用於保存用戶的控制器操作。喜歡的東西:

class StaticPagesController < ApplicationController 
    def create 
    @user = User.new(params[:user]) 
    @user.save! 
    end 
end 

然後正確的路徑添加到您的config/routes.rb文件。

+0

你是對的,雖然我想嘗試沒有Devise首先學習繩索。所以StaticPages中的控制器動作似乎不能解決它。看起來好像表單直接進入用戶控制器,在那裏它使用'create'動作,並且永遠不會觸及StaticPagesController中的那個。它之間的某處看起來好像屬性丟失了?謝謝您的幫助! – user3348545

0

您可以通過顯式傳遞一個url來設置表單目標操作,doens't必須需要通過UsersController中的默認#create動作。

所以你可以試試,@ Judy的回答

+1

哎呀,我愚蠢。我使用強參數,並在我的創建操作中,我擁有了@user = User.new(params [user_params]),而不僅僅是User.new(user_params)。愚蠢的問題,我的一部分。但是對於其他人來說,很高興知道它可以在UsersController中使用默認的創建操作。 – user3348545