我試圖創建一個簡單的登錄表單,用戶應該能夠登錄。我希望它重定向到用戶顯示操作,但它會重定向到.../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)
會話控制器,它看起來像這樣(我一直在下面的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 %>
我的Rails技能是有點生疏了,所以它可能是什麼基本。
更新
我設法通過建立在我的會話控制器中的索引操作其重定向到正確的路徑獲取調用時「解決」了。我不知道(或者認爲)這是實現它的最佳方式。原來的問題是,當用戶登錄時,出於某種原因,它被重定向到/sessions
,而不是我想要的根路徑。當或更新瀏覽器時,應用程序崩潰(因爲我的會話控制器中沒有索引操作)。我不知道爲什麼它沒有重定向到正確的路徑,我也嘗試了redirect_to user_path(user),但結果相同。任何關於如何以「正確」方式解決問題的提示都會很棒!當用戶註冊時,我也遇到了同樣的問題,它重定向到/users
而不是/
。
謝謝,我不認爲是這樣。它在用戶登錄時重定向(警告消息正在顯示等),但路徑仍然是'/ sessions'。問題出在用戶更新他的借款人時,導致應用程序崩潰(因爲我在會話控制器中沒有索引操作)。我已經更新了我原來的問題。 – Anders 2012-04-21 13:38:49
這真的很奇怪,因爲你所描述的一切正是如果你的行爲條件失敗會發生什麼。只是爲了咧嘴笑,當你將「redirect_to user」改爲「redirect_to root_url」時會發生什麼?當用戶登錄(創建會話)時是否正確重定向到root_url? – miked 2012-04-23 02:00:39
是的,會話已成功創建並重定向到根目錄,但'/ sessions'仍在url中。我一直在關注Rails教程,它可能是導致錯誤url的其他方法嗎? – Anders 2012-04-23 05:37:39