1

追加のパラメーターを rspec テストに渡そうとしています (追加のパラメーターは、guest_value と bar_value の 2 つの配列です)。

        it "should create an outing" do 
            lambda do 
                post :create, :outing => FactoryGirl.attributes_for(:outing), :guest_value => [55,66], :bar_value => [66,77]
            end.should change(Outing, :count).by(1)
        end 

ただし、私のテストでは、それらが存在しないかのように完全に無視されます。

さらに、構文は次のとおりです。

                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

終わり

4

1 に答える 1

2

コマンドが必要なことを実行するには、中括弧が必要です (配列を factorygirl 関数に渡します)。エラーを投稿してください。おそらく私はもっと助けることができますか?

レーガン

于 2012-07-10T00:39:40.217 に答える