我在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的帮助器,所以也许我做错了什么?感谢您的帮助。
答案 0 :(得分:1)
这
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
方法对于从循环条件中加入集合对象非常有用。