Ruby on rails 在Rails中编辑表单提交的参数

Ruby on rails 在Rails中编辑表单提交的参数,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的应用程序中有一个表单,它在提交时创建订单参数,如下所示 {"vendor_number"=>"200", "received_date"=>"2014-08-08", "po_number"=>"aaaa", "order_status"=>"-2", "shop_id"=>"2", "order_number"=>"12953", "shop_number"=>""} 在我的控制器内的创建函数中,我试图像这样编辑店铺号 def create

我的应用程序中有一个表单,它在提交时创建
订单参数
,如下所示

{"vendor_number"=>"200", "received_date"=>"2014-08-08", "po_number"=>"aaaa", "order_status"=>"-2", "shop_id"=>"2", "order_number"=>"12953", "shop_number"=>""}
在我的控制器内的创建函数中,我试图像这样编辑店铺号

def create
    p "------------------"
    order_params[:shop_number] = 4
    p order_params
    p order_params[:shop_number]
    p "------------------"
    @order = Order.new(order_params)
    respond_to do |format|
      if @order.save
        format.html { redirect_to '/purchase', notice: 'Order was successfully created.' }
      else
        format.html { render 'new' }
      end
    end
  end
但order_params[:shop_number]仍未更新。。请帮忙。这是正确的方法吗?

试试这个

@order = Order.new(order_params)
@order.shop_number = 4
if @order.save 
......

有三种最简单的方法:

一是:

您可以使用隐藏字段在表单中设置店铺号

f.hidden_field :shop_number, value: (shop_number_variable || 4) #what ever you want
二是:

如nithin所述

@order = Order.new(order_params)
@order.shop_number = (shop_number_variable || 4) #what ever you want
@order.save
三是:

您可以使用before_过滤器。如保存前
或创建前