Rails中的多态路由 - 在视图中

时间:2009-08-28 16:14:17

标签: ruby-on-rails

我将评论作为多态模型。

附在Post,Review等上。

我在CommentsController中也有一个名为test的行动。

我设置了路由,因此test_post_comment_path可以工作(在CommentsController中调用test操作。)

问题是,在我的部分视图中,我希望该路由能够根据当前操作进行更改,即。在帖子上test_post_comment_path,在评论时test_review_comment_path

4 个答案:

答案 0 :(得分:5)

执行此操作的正确方法是使用polymorphic_url ...

答案 1 :(得分:1)

只使用两条不同的路径?

我的意思是:你不想在路线中加入太多逻辑。

如果路线尝试做的不仅仅是路线,那么第一次出现问题时你会遇到严重问题。

在局部视图中,创建特定链接或其他html注释内容的逻辑应该是帮助。

答案 2 :(得分:0)

这样的事情: (在您的部分视图中)

@commentable.each |commentable|
    test_#{commentable.class.to_s.downcase}_comment_path
end

如果是'post'那么它将生成'test_post_comment_path',如果是审查,它将生成test_review_comment_path

答案 3 :(得分:-2)

我决定在视图中使用if语句,基于当前操作是否存在,例如@post或@review