我正在尝试在rspec测试的查询字符串中传递一个数组,但它给了我一个错误。我将发送查询字符串,如“products [] = desk,chair”,并希望控制器能够处理它。
这是错误:
Failure/Error: get :index, { :format => :json, :products => [product_1, product_2]}, { "Accept" => "application/json" }
NoMethodError:
undefined method `each' for "[\"desk\", \"chair\"]":String
这是我的测试方法:
product_1 = "desk"
product_2 = "chair"
get :index, { :format => :json, :products => [product_1, product_2]}, { "Accept" => "application/json" }
继承人我的控制人员:
products.each do |product|
puts "product: #{product}"
end
def products
params[:products].to_s
end
有什么想法吗?
注意:这是运行Rails 3.2.12
答案 0 :(得分:3)
您将products
定义为params[:products].to_s
,使其成为字符串,无论您发送什么。因此,当您在products.each
方法中执行index
时,它会失败。
代替params[:products]
执行每项操作:
def index
params[:products].each do |product|
puts "product: #{product}"
end
end
我确定put,只是对代码进行故障排除,但您不应该在控制器上使用它。