link_to helper无法呈现模型的正确URL

时间:2014-05-23 14:11:47

标签: ruby-on-rails ruby activerecord hyperlink link-to

我有一个Request模型。在我的一个观点中,我试图呈现它的链接。

我尝试的第一件事是:

.requests-container
  = link_to request, class: "request-link"

以下链接呈现为<a href="/requests?class=request__title">My request 1</a>class选项在URL中混合。但是,这是可以理解的,因为link_to似乎期望将URL作为第二个参数。


之后,我尝试了这个版本:

.requests-container
  = link_to request

结果证明结果甚至更奇怪,因为生成的链接如下:<a href="/requests">My request 1</a>

在此链接中,href属性生成为 /requests ,而非 /requests/2 ,此ActiveRecord的预期网址对象


更奇怪的是,我的下一次尝试,

.requests-container
  = link_to request, request, class: "request-link"

产生了一个完全有效的链接:<a class="request-link" href="/requests/2">My request 1</a>。这是预期的链接,它工作正常。


这是Rails中的已知行为吗?我的代码中还有其他部分,我刚刚使用link_to <activerecord object>并且它工作正常,所以我不完全确定为什么它在这种情况下无效。

1 个答案:

答案 0 :(得分:1)

link_to将第一个参数作为链接的body,该链接将显示在视图上,第二个参数是实际的URL

当你尝试

= link_to request, class: "request-link"

class: "request-link"作为params

但是在第二种情况下,你实际上传递了object作为第二个参数,这是正确的

= link_to request, request, class: "request-link"

此处第三个参数位于options哈希

如果你看一下docs,你会发现这个例子

link_to(body, url, html_options = {})
# url is a String; you can use URL helpers like
# posts_path

从上面的例子可以看出,第一,第二和第三个参数分别是bodyurlhtml_options

相关问题