這有點違反rails約定,但我試圖讓一個控制器管理用戶會話身份驗證和用戶註冊。我有麻煩找出如何去做這件事。聯合登錄和註冊頁面?
到目前爲止,我正在合併用戶控制器和會話控制器,並使'new'方法提供新的用戶會話和新的用戶實例。
儘管在rails 3中有了新的路線,但我無法弄清楚如何爲這些項目生成表單。
下面是代碼:
user_controller.rb
class UserController < ApplicationController
def new
@user_session = UserSession.new
@user = User.new
end
def create_user
@user = User.new(params[:user])
if @user.save
flash[:notice] = "Account Successfully Registered"
redirect_back_or_default signup_path
else
render :action => new
end
end
def create_session
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default login_path
else
render :action => new
end
end
end
的意見/用戶/ new.html.erb
<div id="login_section">
<% form_for @user_session do |f| -%>
<%= f.label :email_address, "Email Address" %>
<%= f.text_field :email %>
<%= f.label :password, "Password" %>
<%= f.text_field :password %>
<%= f.submit "Login", :disable_with => 'Logining...' %>
<% end -%>
</div>
<div id="registration_section">
<% form_for @user do |f| -%>
<%= f.label :email_address, "Email Address" %>
<%= f.text_field :email %>
<%= f.label :password, "Password" %>
<%= f.text_field :password %>
<%= f.label :password_confirmation, "Password Confirmation" %>
<%= f.text_field :password_confirmation %>
<%= f.submit "Register", :disable_with => 'Logining...' %>
<% end -%>
</div>
我想我會需要使用:URL =>這些形式的東西,但我不確定如何指定。
within routes.rb我還沒有指定用戶或UserSessions作爲資源(不相信這是最好的方式來做到這一點,但我可以)。
我想,但是,註冊和登錄在同一頁上,並通過執行以下操作來實現這一點:
的routes.rb
match 'signup' => 'user#new'
match 'login' => 'user#new'
什麼是去解決它的最好方法?