如果我有模型返回一个数组,例如:
Person:
has_many :websites
网站是另一个模型,它具有值'url'和'name'
我如何在这些项目的表格中显示以逗号分隔的链接列表,我链接到模型本身,而不是目标网址?
我试过这种方法:
<%= person.websites.map(&:name).join(', ') %>
这让我得到了一个很好的“Site1”或“Site2,Site3”列表。
我尝试将link_to
添加到混音中,并遇到失败。
<%= person.websites.map {|website| link_to website.name, website_path }.join(', ') %>
似乎不起作用。
输出:
No route matches {:action=>"show", :controller=>"websites"} missing required keys: [:id]
很确定我错过了一些简单的事情。
更新
根据评论,我已将其更新为website_path(website)
,但输出现在在呈现之前进行了字符串化处理:
<td><a href="/websites/1">Site1</a>, <a href="/websites/2">Site2</a></td>
所需的输出看起来像这样:
<p>
<strong>Site(s):</strong>
<a href="/websites/1">Site1</a>, <a href="/websites/2">Site2</a>
</p>
答案 0 :(得分:1)
网站路径肯定需要传递网站变量。也许将它以数组形式返回是个好主意,所以在加入之前你有一个数组数组(',')
<%= person.websites.map {|website| [website.name, website_url(website)] } %>
答案 1 :(得分:1)
<%= person.websites.map {|website| link_to(website.name, website_path(website) }.join(', ').html_safe %>