簡體   English   中英

Rails 3路由保留自定義URL進行發布

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM