ruby Rails:记录不从表单保存

cld4siwp  于 5个月前  发布在  Ruby
关注(0)|答案(1)|浏览(46)

我有一个简单的形式使用条纹结帐付款如下:

<%= 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


从控制台,字符串被填入参数中,但总是返回空的记录内:
通过订单处理控制器#create as HTML参数:{“utf8”=>“",“订单”=>{“测试”=>“输入的值”}
订单编号:74,测试:无
谢谢
EDIT 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: "[email protected]", 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]


还是谢谢你。

wwtsj6pe

wwtsj6pe1#

你不保存订单

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
  @order.save
end

字符串
设置值后,使用@order.save保存订单

相关问题