【发布时间】:2017-04-28 11:29:18
【问题描述】:
我有一个简单的表格,使用条纹结帐进行付款,如下所示:
<%= form_for Order.new do |f| %>
<!-- Price -->
<% ["2465"].each do |amount| %>
<input type="hidden" name="amount" value="<%= amount %>" />
<% end %>
<!-- Description -->
<% ["A product"].each do |description| %>
<input type="hidden" name="description" value="<%= description %>" />
<% end %>
<!-- variable string -->
<%= f.text_field :test %>
<!-- Stripe script -->
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-panel-label="Payer {{amount}}"
data-label="Payer 24,65€"
data-billing-address="true"
data-shipping-address="true"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>">
</script>
<% end %>
如您所见,我有一个字段,用户可以在启动条带弹出窗口进行付款之前填充该字段。
<!-- variable string -->
<%= f.text_field :test %>
问题是它总是在数据库中返回 nil,无论用户输入什么。
我正在尝试从我的 orders_controller.rb 中获取值,如下所示:
def create
@order = Order.new
charge_error = nil
# Amount in cents
if @order.valid?
# some stripe set up goes here...
@order.description = params[:description]
@order.amount = params[:amount]
@order.test = params[:test]
end
end
从控制台,字符串被填充参数,但在记录中总是返回空:
OrdersController 处理#create as HTML 参数:{"utf8"=>"✓", "order"=>{"test"=>"VALUE ENTERED"}
Order.last #
谢谢
编辑1: 保存后的完整记录:
=> #<Order id: 82, name: "jérémy zaccherini", created_at: "2017-04-28 12:08:41", updated_at: "2017-04-28 12:08:41", card_token: "tok_1ADXtnA5xCR7Wb7xlUyLKfIN", email: "zaccherini.jeremy@gmail.com", address_line1: "Residence feuch, 75004 PARIS", address_zip: "75004", address_country: "France", address_city: "PARIS", description: "MpyProduct", amount: "2465", status: "Non traitée", test: nil>
编辑解决方案:
重新阅读ruby doc about form helpers,解决方案是在我的表单中使用这样的表单助手:
<!-- variable string -->
<%= text_area_tag(:test) %>
这样我就可以检索从控制器输入的用户值:
@order.test = params[:test]
还是谢谢。
【问题讨论】:
-
你为什么要用
["2465"].each do |amount|来创建一个字段?
标签: ruby-on-rails ruby forms record