我正在尝试使用Postman chrome扩展程序向我的Ruby on Rails应用程序发送帖子请求,但我一直收到错误
ActionController::ParameterMissing (param not found: order): app/controllers/orders_controller.rb:27:in order_params' app/controllers/orders_controller.rb:20:in create
我的orders_controller中的代码是
class OrdersController < ApplicationController
protect_from_forgery :except => :create
def new
@order = Order.new
end
def index
@orders = Order.all
end
def show
@order = Order.find(params[:id])
end
def create
@order = Order.new(order_params)
render text: params[:product]
end
private
def order_params
params.require(:order).permit(:product)
end
end
我对Postman扩展程序的键值对是product[product_name]
Samsung
答案 0 :(得分:8)
让您使用params.require(:order)
。传入的参数应该类似于{"order"=>...}
查看http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html处的文档以使用强参数。
根据您使用的键值对的信息,传入数据中没有称为“顺序”的键。这就是原因 - 它失败了。
希望,这有帮助
答案 1 :(得分:2)
可能params方法需要你没有的东西。检查参数。
这对我有用:
控制器:
def progress_params
params.require(:progress).permit(:game_id, :level_id)
end
查看:
<%= link_to "Completed", progresses_path(:progress =>{:game_id => @level.game_id.to_i, :level_id => @level.id.to_i} ), :method => :post %>