ユーザーがサインインできるようにする簡単なログインフォームを作成しようとしています。ユーザーのshowactionにリダイレクトしたいのですが、代わりに.../sessions
、 `... / users/1にリダイレクトしたいと思います。私はこのようなセッションコントローラーを持っています(私はRailsチュートリアルブックをフォローしています)
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
sign_in user
redirect_to user
else
render 'new'
end
end
に変更しようとしredirect_to user
ましredirect_to users_path(user)
たが、機能しません。
私のルートは次のようになります。
root :to => 'pages#home'
resources :users
resources :sessions, only: [:new, :create, :destroy]
match '/signup', to: 'users#new'
match '/signin', to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete
そして、sessions/sessions.new.html.erbは次のようになります。
<%= form_tag sessions_path do %>
<%= text_field_tag :email, params[:email], :placeholder => "E-post" %>
<%= password_field_tag :password, nil, :placeholder => "Lösenord" %>
<%= submit_tag "Logga in" %>
<% end %>
私のレールのスキルは少し錆びているので、おそらく基本的なものです。
アップデート
セッションコントローラで、呼び出されたときに正しいパスにリダイレクトするインデックスアクションを作成することで、それを「解決」することができました。これが最適な方法かどうかはわかりません(または思いません)。元々の問題は、ユーザーがサインインしたときに、何らかの理由で、/sessions
必要なルートパスではなく、にリダイレクトされることでした。ユーザーがブラウザーを更新したとき、または更新した場合、アプリケーションがクラッシュします(セッションコントローラーにインデックスアクションがなかったため)。なぜ正しいパスにリダイレクトされないのかわかりません。redirect_touser_path(user)も試しましたが、同じ結果になりました。それを「正しい」方法で解決するためのヒントは素晴らしいでしょう!ユーザーがサインアップしたときにも同じ問題が発生し、/users
ではなくにリダイレクトされました/
。