1

私はこのような同様のフォームを持っています:

    <%= form_for :customer,
  :params => @result && @result.params[:customer],
       :errors => @result && @result.errors.for(:customer),
       :builder => BraintreeHelper::BraintreeFormBuilder,
       :url => Braintree::TransparentRedirect.url,
       :html => { :autocomplete => "off"} do |f| -%>
      First name: <%= f.text_field :first_name , :value => "John"%><br />
      <%= f.submit %>
    <% end %>

そのテキストフィールドに値を追加しようとすると、許可されません。ただし、form_forタグからビルダーを取得すると、それを実行できます。Braintreeフォームビルダーの経験がある人はいますか?

4

2 に答える 2

1

Siwei Shen は正しい軌道に乗っています...

Rails のフォーム ビルダーは、フォームをアプリケーションのモデルに結び付け、モデルの属性に対応するフォーム要素の値、名前、および ID を生成するのに役立ちます。それらは非常に役に立ちますが、それらが提供するものをオーバーライドする必要がある場合もあります。

Braintree Rails のサンプル アプリで見つけたサンプル フォーム ビルダーは、TR フォームがアプリではなくゲートウェイに直接送信され、Braintree のゲートウェイが期待する属性名とデフォルト値をフォーム フィールドに与えるため、役立つものをいくつか提供します。アプリに返される検証エラーを入力します。

この特定のケースでは、フォーム ビルダーは最終的に、入力の値 (:first_name を含む) を既存の値 (存在する場合) または nil (渡された値を上書きする) とマージします。

https://github.com/braintree/braintree_ruby_examples/blob/master/rails_tr_checkout/app/helpers/braintree_form_builder.rb#L22

ニーズに合わせてフォーム ビルダーを自由に変更してください。

于 2012-04-13T16:26:16.120 に答える
0

「form_for」を使用する場合、デフォルト値はフォーム オブジェクトの値です。例えば

@person = Person.new(:first_name => "Jack")

<%= form_for :person do |f| %>
  <%= f.text_field :first_name %>  
<% end %>

デフォルト値 "Jack" のテキスト入力が得られます:

<input type="text" value="Jack"/>

そのため、 を使用する場合f.text_field、フォーム オブジェクト (ここでは @person) を変更しない限り、デフォルト値を設定することはできません。

デフォルト値を設定したい場合は、「フォーム オブジェクト」を持たない「form_tag」を使用するか、jQuery を使用してデフォルト値のものを実装することをお勧めします。

于 2012-04-10T22:32:36.557 に答える