Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将参数传递给rspec测试_Ruby On Rails_Rspec - Fatal编程技术网

Ruby on rails 将参数传递给rspec测试

Ruby on rails 将参数传递给rspec测试,ruby-on-rails,rspec,Ruby On Rails,Rspec,我试图将额外的参数传递给rspec测试,因此(额外的参数是两个数组,guest_值和bar_值): 然而,我的测试完全忽略了它们,好像它们根本不存在 此外,语法: post :create, :outing => { FactoryGirl.attributes_for(:outing), :guest_value => [55,66], :bar_value => [66,77] } 引发一个错误: NoMethodError: und

我试图将额外的参数传递给rspec测试,因此(额外的参数是两个数组,guest_值和bar_值):

然而,我的测试完全忽略了它们,好像它们根本不存在

此外,语法:

                post :create, :outing => { FactoryGirl.attributes_for(:outing), :guest_value => [55,66], :bar_value => [66,77] }
引发一个错误:

NoMethodError:
   undefined method `each' for nil:NilClass
这是我的控制器代码的结果:

def create
@outing = Outing.new(params[:outing])

@outing.user_id = @user.id

if @outing.save 

    params[:guestvalue].each do |guest_id|
        @outing.add_guest(guest_id)
    end 

    params[:barvalue].each do |bar_id|
        @outing.add_bar(bar_id)
    end 

    TimeRange.create(:element_id => @outing.id, :element_type => 'outing', :start_time => params[:day][:start_time], :end_time => params[:day][:end_time])  

    flash[:notice] = "Outing created successfully!" 

    redirect_to @outing
else 
    flash[:notice] = "Error creating outing!"
    @outing = Outing.new
    render(new_outing_path)
end

结束

您肯定需要大括号来执行命令(将数组传递给factorygirl函数)。发布错误,也许我可以提供更多帮助


reagan

要么
:barvalue
要么
guestvalue
没有方法
。每个
,我假设这是因为在测试中您将它们命名为
:bar\u value
:guest\u value
。希望您的控制器正在检查
参数[:guestvalue]
参数[:barvalue]
时,帮助不会是您在呼叫
:guestvalue
参数[:barvalue]
(无下划线),对吗?
def create
@outing = Outing.new(params[:outing])

@outing.user_id = @user.id

if @outing.save 

    params[:guestvalue].each do |guest_id|
        @outing.add_guest(guest_id)
    end 

    params[:barvalue].each do |bar_id|
        @outing.add_bar(bar_id)
    end 

    TimeRange.create(:element_id => @outing.id, :element_type => 'outing', :start_time => params[:day][:start_time], :end_time => params[:day][:end_time])  

    flash[:notice] = "Outing created successfully!" 

    redirect_to @outing
else 
    flash[:notice] = "Error creating outing!"
    @outing = Outing.new
    render(new_outing_path)
end