2015-07-18 71 views
0

我有一種情況存在:軌道重定向到動作不正確的URL

resources :magazines do 
    resources :articles do 
    resources :comments 
    end 
end 

從而避免嵌套超過2層深我已經重新分解這是:

resources :magazines do 
    resources :articles 
end 
resources :articles do 
    resources :comments 
end 

我的文章顯示操作URL爲: /雜誌/ 3/articles/11

在此視圖中,我有一個用於創建新評論的表單。

評論成功保存後,表單重定向,所有的表現都很好。

當表單提交不成功時,我希望重新顯示顯示驗證錯誤的視圖。我明白正確的做法是呈現'articles/show'視圖。這也適用,並且顯示的驗證錯誤重新顯示視圖。

問題是,當保存失敗和文章/節目呈現的URL不再是正確的,並表現爲: /文章/ 11 /評論

class ArticlesController < ApplicationController 
    def show 
    @article = Article.find(params[:id]) 
    @comments = @article.comments.order(created_at: :asc).page(params[:page]).per_page(5) 
    @comment = Comment.new 
    end 
end 

class CommentsController < ApplicationController 
    def create 
    @article = Article.find(params[:id]) 
    @comment = @article.comments.new(discussion_params) 
    @comment.user_id = current_user.id 

    if @comment.save 
     redirect_to @article 
    else 
     render 'articles/show' 
    end 
    end 

    private 

    def discussion_params 
     params.require(:comment).permit(:content) 
    end 
end 

回答

0

我解決了這個改變我的路線回以原來的方式,現在文章顯示的行動包括該雜誌的網址。

我明白這打破了「不超過2層深」的路由規則,但它是我能夠使其工作的唯一途徑。