私は Michael Hartl による Ruby on Rails チュートリアルに取り組み、アプリケーションのナビゲーション バーに含まれる小さなログイン フォームも実装しました (ユーザーは実際のログイン ページまたはナビゲーション バーのログインからログインできます)。ユーザーがログイン ページからログインする場合、root_url にリダイレクトする必要があります。
ただし、ユーザーが navbar フォームからログインした場合は、「ログインに成功しました!」というメッセージが表示された同じページに留まりたいと考えています。ページ上部のメッセージ。これどうやってするの?
私のコードは次のとおりです。
_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] 値としてキャプチャしているようです。あなたのアイデアをいただければ幸いです。