ActionController :: ParameterMissing(未找到参数:order)

时间:2013-12-03 08:38:15

标签: ruby-on-rails ruby params

我正在尝试使用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

2 个答案:

答案 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 %>