[英]rails 3 routing keep custom url for post
我是Rails的新手,如果出現錯誤並且呈現了“新”模板,則希望使用戶登錄時的網址保持不變
這是我的路線
resources :users, only: [:new, :create]
resources :sessions, only: [:new, :create, :destroy]
root to: 'pages#home'
match '/signin', to: 'sessions#new'
#match '/signin', to: 'sessions#create', via: :post, as: :post_session
match '/logout', to: 'sessions#destroy'
這是會話控制器代碼
def new
end
def create
user = User.find_by_email(params[:session][:email])
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_to root_url
else
flash.now[:error] = 'Invalid email or password'
render 'new'
end
end
如您所見,我注釋掉了一條自定義路由以捕獲該帖子,以便render'new'調用保留/ signin url,但是當我這樣做時,錯誤的Flash消息傳遞不會在頁面中呈現(它卻沒有該路線)。 我嘗試不使用now方法使用Flash,但仍然沒有看到我的消息顯示。 有任何想法嗎?
編輯:
我嘗試了以下建議,但仍然看到問題。 查看訪問日志后,該應用程序將路由到第一個登錄路由,因為它是使用match而不是get定義的。 我的更新后的工作路線文件現在看起來像這樣
resources :users, only: [:new, :create]
#resources :sessions, only: [:new, :create, :destroy]
root to: 'pages#home'
match '/signin', to: 'sessions#new', via: :get
match '/signin', to: 'sessions#create', via: :post, as: :post_session
match '/logout', to: 'sessions#destroy', via: :delete
立即刪除,這不是必需的。 您的路線可能有沖突。 根據您設置匹配線的方式,您可以完全刪除resources :sessions
,然后取消注釋匹配線。 那應該照顧您的需要。
另外,請確保回到您的其他問題並接受一些答案。 0%的接受率並不太可能吸引答案。
編輯
根據您的評論,當您刪除資源調用時,可能只是不知道此時呈現什么內容。 嘗試更改為:
render "sessions/new"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.