当我使用我的脚手架创建rails应用程序添加新的“产品”时,以下行正确添加了新产品
@product = Product.new(params[:product])
当我尝试使用以下URL添加新产品时(尝试从java程序中发布数据)。
http://localhost:3000/products?serial=555&value=111
产品未创建,但我可以访问“serial”和“value”值,如下所示:
@product = Product.new
@product.serial=params[:serial]
@product.value=params[:value]
@product.save
为了进一步让我感到困惑,如果我使用rails应用添加新产品,则params[:serial]
和params[:value]
变量为空。
有人可以指出我正确的方向。
由于
答案 0 :(得分:11)
Model.new方法采用哈希值。
params[:product]
实际上包含{:serial => 555, :value => 111}
您想要使用的网址是:
http://localhost:3000/products?product[serial]=555&product[value]=111
(确保您确实使用了POST)
如果您想保留当前的网址方案,则必须使用:
@product = Product.new({:serial => params[:serial], :value => params[:value]})
您还可以使用以下命令将参数打印到控制台中确切地确定params中可用的内容:
p params
祝你好运!