ユーザーがサインインできるようにする単純なログインフォームを作成しようとしています。ユーザーの表示アクションにリダイレクトしたい代わりに、.../sessions
私はそれを `.../users/1 'にリダイレクトしたいと思っています。私はredirect_to users_path(user)
へredirect_to user
を変更しようとしました新しいセッションを作成するときにRailsルーティングが間違ったURLにリダイレクトされる
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
次のようになりますセッションコントローラ(私はRailsのチュートリアルブックを次されている)を持っているが、それは動作しません。
私のルートは次のようになります。
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.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_to user_path(ユーザー)を試みたが、同じ結果です。どのように "正しい"方法でそれを解決するためのヒントは、素晴らしいだろう!ユーザーがサインアップしたときにも同じ問題が発生しましたが、/
の代わりに/users
にリダイレクトされました。
ありがとう、私はそれが事実だとは思わない。ユーザーがサインインすると(警告メッセージが表示されているなど)、リダイレクトされますが、パスは '/ sessions'です。問題はユーザーが自分の借り手を更新したためで、アプリケーションがクラッシュする原因になった(セッションコントローラにインデックスアクションがないため)。私は元の質問を更新しました。 – Anders
これは本当に奇妙です。記述していることは、アクションの条件が失敗した場合に起こることとまったく同じですからです。 grinsの場合、 "redirect_to user"を "redirect_to root_url"に変更するとどうなりますか?ユーザーがサインイン(セッションを作成)すると、root_urlに正しくリダイレクトされますか? – miked
はい、セッションは正常に作成され、ルートにリダイレクトされますが、 '/ sessions'はまだURLにあります。私はRailsチュートリアルブックに従っています。間違ったURLを引き起こしている他の方法かもしれませんか? – Anders