将数组传递给rspec中的get命令

时间:2015-12-14 21:36:37

标签: ruby-on-rails ruby rspec

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

1 个答案:

答案 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,只是对代码进行故障排除,但您不应该在控制器上使用它。