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. <%何も見せません。あなたは Haml にいます。それは ERb のものです (しかし、そこでさえ何も表示されませんでした:=記号を忘れていたはず<%=です)。
  3. About 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現在のモデル インスタンスに基づいて各タグのスタイル/ID を設定liし、将来のスタイリング/スクリプトの実装を容易にします。

于 2012-05-07T19:45:32.920 に答える