我正在使用AuthLogic在我的Rails应用程序中对用户进行身份验证。该部分正确设置并正确工作。如何在Rails中重新呈现操作时在页面URL中维护相同的控制器和操作?
我有以下途径定义:
map.login '/account/login', :controller => :user_sessions, :action => :new
调用耙路线返回我的期望:
login /account/login {:controller=>"user_sessions", :action=>"new"}
当有人提出一个登录,它调用UserSessionsController.create:
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default account_url
else
render :action => :new
end
end
如果@ user_session.save失败,则适当的错误消息出现在sc颖。但是,浏览器URL也会更改为“http:// localhost:3000/user_session”,而不是停留在“http:// localhost:3000/account/login”上。
我认为问题是我正在给渲染方法。我应该喂什么?
我很欣赏这个建议,但是我发现强迫性的不一致令人不安。任何在页面上出现错误并想要报告的人都将最终链接到单击链接无效的页面。正如你所说,使用redirect_to并坚持错误也是一样。 – Shaun 2010-12-05 16:01:12
没有其他选择。数据必须以某种方式持续存在。要么你不做重定向,要么将它存储在某处并重定向。 – 2010-12-07 20:06:53