自定义url_for为模型返回的内容?

时间:2013-01-17 22:45:31

标签: ruby-on-rails ruby-on-rails-3 routes actionview

我的post模型有很多comments。现在,评论链接实际上是一个类似于/post/1?page=3#26的网址。

我希望能够做的是致电link_to "foobar", @comment并让它生成正确的网址。我已经知道如何计算评论所在的页面,因此您可以假设@comment.page_num将返回正确的整数。

我认为这需要以某种方式定制polymorphic_url

如果不能轻易完成,我可能需要辅助函数link_to_comment,但我希望它能够完成link_to可以做的所有事情,即传递块而不是。

2 个答案:

答案 0 :(得分:0)

我认为这样的事情会起作用:

link_to "foobar", @post, href: "#{url_for(@post)}?page=#{@comment.page_num}"

这假设page_num返回3#26这是一个我并不十分自信的假设,但我认为你可以从那里弄明白。

还有一个需要考虑的评论。 page_num真的是Comment类的重要属性吗?在我看来,这是一个格式问题,可能属于辅助函数,而不是Model。只是想一想。

我希望它有所帮助。

答案 1 :(得分:0)

所以这就是我最终做的事情。它非常简单但完全符合我的需要。我原来的范围可能过于雄心勃勃。经典案例保持简单愚蠢

module CommentsHelper

  def comment_page_url(comment)
    post_url(comment.post, page: comment.page_num, anchor: comment.id)
  end

end