0

マルチステップフォームを作成していますが、ボタンコードを複数のビューで再利用したいと思います。これが私が部分的なレイアウトに分解したいコードです:

<div class="actions">
<%= link_to "Back", previous_wizard_path, :class => 'btn btn-large' %>
<%= f.submit "Next", class: "btn btn-large btn-primary" %>
</div>

このコードを「_action_buttons.html.erb」という新しい部分レイアウトにコピーしました。

私は次のコードでこれを部​​分的にレンダリングしようとしています:

<%= render 'multi_form/action_buttons' %>

ただし、これを実行しようとすると、f.submitが原因で次のエラーが発生します。

undefined local variable or method `f' for #<#<Class:0x007fbae16c1dc8>:0x007fbae13b33e8>

抽出されたソース(3行目あたり):

1: <div class="actions">
2:     <%= link_to "Back", previous_wizard_path, :class => 'btn btn-large' %>
3:     <%= f.submit "Next", class: "btn btn-large btn-primary" %>
4:   </div>

このエラーが発生しないようにレンダリング呼び出しを変更するにはどうすればよいですか?これはおそらく一般的な問題だと思います。初心者を助けてください!

4

2 に答える 2

2
  1. フォームタグを壊さないでください。予期しない動作が発生する可能性があり、コードの可読性が損なわれる可能性があります。
  2. このアプローチを本当に実行したい場合、1つの手法は、フォーム変数をテンプレートに渡すことができることです。次のように試みることができます。

    <%= render :partial => 'multi_form/action_buttons', :locals => {:f => f} %>
    
于 2012-10-19T00:50:30.970 に答える
1

キーワードなしでより簡潔な形式を使用できます:partial

この質問を確認してくださいRails:ローカルをパーシャルに渡すための構文について混乱しています

于 2012-10-19T03:55:59.613 に答える