使用before_filter :login_required
保护特定页面时,应用程序布局模板中的link_to_unless_current
方法会将登录页面的“登录”链接呈现为超链接,而不仅仅是文本。
“登录”文本/链接问题仅在通过before_filter
机制重定向到登录页面时发生,否则link_to_unless_current
方法按预期运行。
似乎link_to_unless_current
使用旧页面数据作为“当前”而不是登录页面(重定向时)。
答案 0 :(得分:1)
您可以使用路由帮助程序方法执行页面重定向:
redirect_to login_url
如果定义了登录的“命名路由”(通过在“config / routes.rb”文件中添加“/ login”的显式路径来完成)。
此路径实际上与:
生成的路径相同new_session_url
有关路由的详细信息,我建议使用Rails Routing Guide。
答案 1 :(得分:0)
欣赏回复,你可以根据问题的性质来判断我们是否是新手。顺便说一句,我们在这个网站上发布了同样的问题:http://railsforum.com(不确定它是否是官方的铁路论坛)但还没有回复。 StackOverflow到目前为止似乎正在创建一个伟大的帮助者社区,愿意接触到以编程方式挑战的人。
我认为问题的一部分是我们将宁静的网址与标准路线混合在一起。登录页面映射到restful route“/ login”,但页面重定向使用“/ sessions / new”(Rick Olson的restful认证模块)
在application.rb中,我们强制过滤器为“/ login”,这解决了问题:
before_filter :login_required protected def login_required return true if logged_in? session[:return_to] = request.request_uri flash[:error] = "Please log in first" redirect_to "/login" and return false end
评论这种方法的技术优点,因为它可能对其他新手有所帮助。
谢谢, 乔