0

我很难让我的助手显示列表项。标记如下所示:

   - @bars.each do |bar|
      <% display_bar(bar) %>

实际的助手如下所示:

module MyHelper
  def display_bar(bar)
    type = bar.type
    concat(%li.type)
    concat(%b some text)
    concat(%i some more text)
  end
end

我在这里做错了什么?

4

2 回答 2

2
  1. 你的助手的名字display_bar不是display_event

  2. 你应该使用=而不是<% %>

    - @bars.each do |bar|
        = display_event(bar)
    

编辑

糟糕,没有仔细阅读display_bar方法的内容,因为@jdoe 提到您不能在 Ruby 代码中使用 Haml 标记语法。

于 2012-05-07T19:33:15.687 回答
2
  1. 这样的事情必须通过部分来实现。或见 5。
  2. <%不会给你看任何东西。你在哈姆尔。这是 ERb 的东西(但即使在那里它也不会显示任何东西:你忘记了这个=标志,它应该是<%=)。
  3. 关于concat(%li.type):你不能把你的标记放在你的 Ruby 代码中。%liRuby 对您的“代码”一无所知。
  4. Amokrane Chentir 已经提到过。
  5. 你正在尝试重新发明轮子。Rails 已经为这种简单的情况提供了出色的助手。

看一看:

  = content_tag_for(:li, @bars) do |bar|
    %b= bar.title
    %i= bar.id

UPD: content_tag_for根据当前模型实例为每个li标签设置样式/ID,以便将来轻松实现样式/脚本。

于 2012-05-07T19:45:32.920 回答