Rails嵌套的content_tag

我试图将内容标签embedded到自定义帮助器中,以创build如下所示的内容:

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

请注意,input不与表单关联,它将通过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' %> 

但是,当我呼叫助手时,标签不显示,只显示input。 如果注释掉text_field_tag,则显示标签。

谢谢!

你需要一个+来快速修复: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块内,只显示最后一个返回的string。

你也可以使用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