我已经完成了 Michael Hartl 的 Ruby on Rails 教程,并且还实现了一个包含在我的应用程序导航栏上的小型登录表单(因此用户可以从实际登录页面或导航栏登录)。如果用户从登录页面登录,我确实希望他们重定向到 root_url。
但是,如果用户从导航栏表单登录,我希望他们留在同一页面上并显示“成功登录!” 页面顶部的消息。我怎样才能做到这一点?
我的代码如下:
从_header.html.erb
文件中:
<%= form_tag sessions_path, class: "navbar-form pull-right" do %>
<%= text_field_tag :email, nil, class: "input-small", placeholder: "Email" %>
<%= password_field_tag :password, nil, class: "input-small", placeholder: "Password" %>
<%= check_box_tag :remember_me, 1, params[:remember_me], title: "select to remember login" %>
<%= submit_tag "Sign in", class: "btn btn-mini" %>
<% end %>
从sessions_helper.rb
文件中:
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
session.delete(:return_to)
end
def store_location
session[:return_to] = request.url
end
我试图利用 中的redirect_back_or
方法sessions_helper.rb
,但它似乎将会话路径捕获为 session[:return_to] 值,而不是登录请求的原始页面。我会很感激你的想法。