表示したい URL/タイトル ペアの値のリストがあります。(より具体的には、各オブジェクトには独自のリンクのリストがあり、0 のもの、1 のもの、それ以上のものがあります。) コンマで区切られたリストにそれらを表示したいと思います。だから私はこれを私の.erbファイルに書きました:
<%= links.map{|wl| link_to wl.title, wl.url}.join(', ') %>
少し驚いたことに、作成したいリンクの HTML コードのコンマ区切りリストが表示されました。つまり、すべての山かっこをアンパサンドでエンコードしていました。高階関数におかしな点がないことを確認するために、より命令的なバージョンを試しました。
<% a = [] %>
<% links.each do |wl| %>
<% a << link_to(wl.title, wl.url) %>
<% end %>
<%= a.join(', ') %>
もちろん、同じ結果です。link_to
しかし、私は を誤用しているとは思いません。
<% links.each do |wl| %>
<%= link_to(wl.title, wl.url) %>,
<% end %>
次に、実際にリンクを作成します。最後のコンマの後に余分なコンマがあることを除いて、それは私が望むものとほぼ同じです。link_to
出力がどこに向かっているかに応じて異なる動作をさせる魔法が内部で行われていますか? その魔法を回避する方法はありますか?セマンティクスはまさに私がここjoin
で求めているものであり、(each_index を使用して、おそらく) 自分でロールする方法を理解することはできますが、一般的な問題であるに違いないものに対する非常に重く、Ruby 以外のソリューションのように思えます。