我有一些文章,每个文章都有一个“显示”页面。我正在制作它,所以每篇文章也在节目页面上都有一些评论。我为评论设置了“创建”操作,但我需要在评论控制器的“创建”操作中添加“重定向”。
我希望重定向转到新创建的评论所属的文章的显示页面。
我该怎么写这个redirect_to语句?
这是我到目前为止所拥有的:
def create
@comment = Comment.new(comment_params)
if @comment.save
@article = ?________?
redirect_to @article
end
end
我感谢你的帮助,因为我已经被这个概念迷惑了很久,真的很期待能够超越这个驼峰。
答案 0 :(得分:2)
如果您的关系设置正确并且路线定义正确,这是一项非常简单的任务。
你的模特应该(至少):
class Article < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :article
end
这确保了每个模型上正确的辅助方法。现在定义您的路线,以便评论属于文章:
// somewhere in routes.rb
resources :articles do
resources :comments
end
这将为您提供嵌套路线,最值得注意的是所需的创建路线:
POST /articles/:article_id/comments
您可以在哪里指导您的评论作品,您的创建现在将如下所示:
// Comments controller
def create
@article = Article.find(params[:article_id]) # Probably should verify this gets something
if @comment = @article.comments.create(comment_params)
redirect_to article_path(@article)
else
render :new
end
end
这应该解决你的问题。 (如果有任何语法问题或其他混淆请告诉我 - 这是从内存中提取的。)