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

沉思伟走在了正确的轨道上……

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 回答