Rails 4 - ヘルパーが何も返さない
概要
私は Rails 4 を使用しており、ビュー内のコードの一部を減らすための単純なヘルパーを構築しようとしています。
ヘルパーを使用する前のビュー コード (show.html.erb) は次のとおりです。
<% unless @article.long_effects.blank? %>
<ul>
<% @article.long_effects.split(';').each do |effect| %>
<li><%= effect %></li>
<% end %>
</ul>
<% end %>
上記のコード用に私が構築したヘルパーは次のとおりです。
def list(attribute)
unless attribute.blank?
content_tag(:ul) do
attribute.split(';').each do |a|
content_tag(:li, a)
end
end
end
end
次に、ビューから次のように呼び出します
<%= list(@article.long_effects) %>
残念ながら、ヘルパーは何も返しません。 HTML を返すヘルパーを作成するのは初めてなので、何か間違っているのでしょうか?
解決策
から
def list(attribute)
unless attribute.blank?
content_tag(:ul) do
attribute.split(';').each do |a|
content_tag(:li, a)
end
end
end
end
に
def list(attribute)
unless attribute.blank?
content_tag(:ul) do
attribute.split(';').each do |a|
concat content_tag(:li, a)
end
end
end
end
concat メソッドは、ループ条件からコレクション オブジェクトを結合するのに役立ちます。