如何在.map块中生成链接?

时间:2012-12-18 07:39:10

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

我有这样的电话:

<%= product.categories.map{|cat| cat.name}.join(', ').to_s + "." %>

我想做的事情是这样的:

<%= product.categories.map{|cat| link_to cat.name, category_path(cat)}.join(', ').to_s + "." %>

当我这样做时,它实际上将路径/categories/1作为文本吐出,并且实际上并没有将其作为链接。

如何在此块中生成实际链接?

感谢。

编辑:任何人都有关于如何做到这一点的想法?

2 个答案:

答案 0 :(得分:0)

你可以这样做

<% product.categories.each do |p| %>
 <%= link_to p.name, category_path p %>
<% end %>

<强>更新

也许尝试这样

<% array =  product.categories.collect { |p| raw link_to p.name, category_path p } %>

这应该保存数组中的所有链接以供进一步使用。现在你可以尝试

<%= array.join('., ') %>

未经测试的代码。请注意这是否有效。

答案 1 :(得分:0)

我需要将整个map结果包装成raw,如下所示:

<%= raw(@product.categories.map{ |cat| raw(link_to(cat.name, category_path(cat))) }.join(', ') + ".") %>

要获得更完整的答案,check here