0

私はこのような電話があります:

<%= 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実際にはそれをリンクにしません。

このブロック内に実際のリンクを生成するにはどうすればよいですか?

ありがとう。

編集:これを行う方法について誰かが何かアイデアがありますか?

4

2 に答える 2

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('., ') %>

テストされていないコード。これが機能するかどうかを確認してください。

于 2012-12-18T08:01:58.997 に答える
0

map結果全体を次のrawようにラップする必要があります。

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

より完全な答えについては、こちらを確認してください

于 2012-12-31T01:38:27.743 に答える