0

良い一日!ちょっとした初心者の質問: 特別な外観の form_for ヘルパーのフィールドを生成したいとしましょう。したがって、モデルの多くのフィールドを生成するために複雑なコードを繰り返さないように、いくつかの部分をレンダリングしてそこにパラメーターを渡します。その中にフォームオブジェクトへの参照があります。
質問は、フォーム オブジェクトの部分的に必要なメソッドで呼び出す render メソッドへのパスは何ですか? たとえば、今回は email_field を生成したいと思います。

<%= form_for @order do |f| %>
<%= render :partial => 'form_field_special', :locals => {:form => f, :type => :email_field, :labelcaption => "SpcName"} %>
<% end %>

部分自体:

<div class="control-group">
<%= f.label :name, <%= labelcaption %> , :class => "control-label" %>
<div class="controls">
<%= f.type :name %> # ??????
</div>
</div>

君たちありがとう!

4

2 に答える 2

0

ルビーパワーを使う。Object#sendメソッド:

<%= form_for @order do |f| %>
  <%= render :partial => 'form_field_special', :locals => {..., :field_type => 'email_field'} %>
<% end %>

<%= f.send(field_type, :name) %>
于 2012-10-05T12:47:29.533 に答える
0

次の方法は、ルビ オブジェクトの関数をその名前で呼び出す最速の方法であることが証明されています。

m = form.method(name_of_the_method)
m.call(parameters)
于 2012-10-06T10:20:10.043 に答える