【问题标题】:Rails 4 - Helper not returning anythingRails 4 - 助手不返回任何东西
【发布时间】:2016-03-07 15:15:32
【问题描述】:

我在 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 的帮助程序,所以也许我做错了什么?感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 methods helper


    【解决方案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 方法将有助于从循环条件中加入集合对象。

    【讨论】:

    • 非常感谢。你能解释一下 concat 吗?对为什么这使它起作用感到困惑。 @richfisher
    • 代码块attribute.split(';').each { |a| # do something }返回attribute.split(';'),所以需要手动concat循环中的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多