Rails Activerecord创建链接和逗号分隔值

时间:2014-02-23 20:58:26

标签: ruby-on-rails activerecord

如果我有模型返回一个数组,例如:

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>&lt;a href=&quot;/websites/1&quot;&gt;Site1&lt;/a&gt;, &lt;a href=&quot;/websites/2&quot;&gt;Site2&lt;/a&gt;</td>

所需的输出看起来像这样:

<p>
  <strong>Site(s):</strong>
  <a href="/websites/1">Site1</a>, <a href="/websites/2">Site2</a>
</p>

2 个答案:

答案 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 %>