Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 以Rails形式混合模型绑定和非模型绑定字段_Ruby On Rails 4_Form For - Fatal编程技术网

Ruby on rails 4 以Rails形式混合模型绑定和非模型绑定字段

Ruby on rails 4 以Rails形式混合模型绑定和非模型绑定字段,ruby-on-rails-4,form-for,Ruby On Rails 4,Form For,我的Rails应用程序中有一个表单,它将数据传递给第三方(Stripe),而无需模型。但是,我的客户机现在希望同一表单包含其他持久化的字段。如何创建提交模型绑定和非模型绑定字段的表单?我不熟悉Stripe,但您可以使用“attr\u accessor”轻松地在模型中包含非数据库绑定属性 在您的模型中 class MyModel < ActiveRecord::Base attr_accessor :stripe_attribute_one, :stripe_attribute_two

我的Rails应用程序中有一个表单,它将数据传递给第三方(Stripe),而无需模型。但是,我的客户机现在希望同一表单包含其他持久化的字段。如何创建提交模型绑定和非模型绑定字段的表单?

我不熟悉Stripe,但您可以使用“attr\u accessor”轻松地在模型中包含非数据库绑定属性

在您的模型中

class MyModel < ActiveRecord::Base
  attr_accessor :stripe_attribute_one, :stripe_attribute_two
end
classmymodel
以你的形式

# assuming your model has migrated attributes called :db_attribute_one and :db_attribute_two
<%= form_for @my_model %>
  <%= f.text_field :db_attribute_one %>
  <%= f.text_field :db_attribute_two %>
  <%= f.text_field :stripe_attribute_one %>
  <%= f.text_field :stripe_attribute_two %>
<% end %>
#假设您的模型迁移了名为:db_attribute_one和:db_attribute_two的属性

您只需使用原始HTML创建条带字段即可。Stripe不希望您在字段上设置
name
属性以防止提交字段数据。无论如何,这些字段的验证都必须在客户端完成,因此将条带字段绑定到rails
form_for
,实际上没有任何好处。这很难看,因为rails从不使用这些属性。修改模型的唯一目的是通过rails表单帮助程序呈现一组字段,这既令人困惑,也没有必要。此外,您还必须在每个表单字段上取消设置name属性,无论是通过这些帮助程序还是通过Javascript。这是条带表单的一个要求。由于这些原因,纯HTML更简单。@Deefour,您能详细说明“取消设置名称属性”的含义吗?请阅读我上面原始评论链接中的文档。允许您在无SSL的站点上接受卡的原因是,在使用stripe.js时,您没有通过网络传递任何卡信息。要防止将卡信息与表单提交一起发送,您需要从卡字段中删除/取消设置
name=“…”
属性。请参阅;您可以设置
name:nil
或类似选项。但对我来说,这种方式违背了助手的目的,这就是为什么我建议只使用原始HTML。