这有点违反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'
什么是去解决它的最好方法?