Rails:如何呈现重复的表单块?
为了不重复自己,我想创建一个以特定方式呈现表单块(文本字段或文本区域)的函数。 我想要一个像这样的结果(使用Haml和twitter-bootstrap):
.form-block.input-prepend %span.add-on> %i.icon.icon-home = f.text_field :name, :value => @store.name, :placeholder => 'Company Name'
为此,我创建了一个文件views/layouts/_form-block.html.haml
,其中插入了以下代码:
.form-block.input-prepend %span.add-on> %i{ :class => "icon icon-#{icon}" } = yield
我在视图中使用以下方法调用块:
- render :template => 'layouts/_form-block', :locals => { :icon => 'home' } do = f.text_field :name, :value => @store.name, :placeholder => 'Company Name'
但它不起作用。 我有以下错误'nil' is not an ActiveModel-compatible object that returns a valid partial path.
你有什么主意吗? 这是最好的方法吗?
提前致谢。
如果要使用= yield
传递块,则需要将其渲染为布局。 使用render :layout =>
而不是render :template =>
。