0

繰り返さないために、特定の方法でフォーム ブロック (テキスト フィールドまたはテキスト領域) をレンダリングする関数を作成したいと思います。このような結果が必要です (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.

何か考えはありますか?これが最善の方法ですか?

前もって感謝します。

4

1 に答える 1

2

ブロックを渡すために使用する場合は= yield、レイアウトとしてレンダリングする必要があります。render :layout =>の代わりに使用しrender :template =>ます。

于 2012-08-17T19:13:58.457 に答える