88

次のようなものを作成するために、コンテンツタグをカスタムヘルパーにネストしようとしています:

<div class="field">
   <label>A Label</label>
   <input class="medium new_value" size="20" type="text" name="value_name" />
</div>

入力はフォームに関連付けられていないことに注意してください。JavaScript を介して保存されます。

ヘルパーは次のとおりです (html を表示するだけでなく、さらに多くのことを行います)。

module InputHelper
    def editable_input(label,name)
         content_tag :div, :class => "field" do
          content_tag :label,label
          text_field_tag name,'', :class => 'medium new_value'
         end
    end
end

<%= editable_input 'Year Founded', 'companyStartDate' %>

ただし、ヘルパーを呼び出すとラベルは表示されず、入力のみが表示されます。text_field_tag をコメントアウトすると、ラベルが表示されます。

ありがとう!

4

4 に答える 4

160

迅速な修正が必要です+:D

module InputHelper
  def editable_input(label,name)
    content_tag :div, :class => "field" do
      content_tag(:label,label) + # Note the + in this line
      text_field_tag(name,'', :class => 'medium new_value')
    end
  end
end

<%= editable_input 'Year Founded', 'companyStartDate' %>

のブロック内ではcontent_tag :div、最後に返された文字列のみが表示されます。

于 2010-11-17T15:04:41.170 に答える
57

concatメソッドを使用することもできます。

module InputHelper
  def editable_input(label,name)
    content_tag :div, :class => "field" do
      concat(content_tag(:label,label))
      concat(text_field_tag(name,'', :class => 'medium new_value'))
    end
  end
end

ソース: Rails 3 で content_tag をネストする

于 2013-04-10T06:59:39.287 に答える