我有一个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>
并且它工作正常,所以我不完全确定为什么它在这种情况下无效。
答案 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
从上面的例子可以看出,第一,第二和第三个参数分别是body
,url
和html_options
。