Techioz Blog

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 メソッドは、ループ条件からコレクション オブジェクトを結合するのに役立ちます。