My spec/controllers/undertakings_controller_spec.rbは以下のとおりです。Rspecエラー、すべてのモデルでアクションを作成
require 'rails_helper'
RSpec.describe UndertakingsController, type: :controller do
describe '#create' do
let(:undertaking_params) do
attributes_for(:undertaking)
end
it 'increases undertaking by 1' do
user=create(:user)
login_user user
expect{post :create , undertaking: undertaking_params }.to change(Undertaking, :count).by(1)
end
end
end
他のアクションのテストが機能するため、この仕様ファイル内の他のアクションを削除します。 とMy controllers/undertakings_controller.rbは以下のとおりです。
class UndertakingsController < ApplicationController
def create
@undertaking=current_user.undertakings.build(undertaking_params)
@undertaking.asking_id=params[:asking_id]
if @undertaking.save
flash[:success] = "依頼の申し込みに成功しました。"
redirect_to @undertaking.asking
else
@[email protected]
render 'askings/show'
end
end
とMy models/undertaking.rbは以下のとおりです。
class Undertaking < ActiveRecord::Base
belongs_to :user
belongs_to :asking
has_many :comments
has_one :deciding
validates :content , presence: true , length: {maximum: 800}
validates :title , presence: true , length: {maximum: 20}
end
私のエラーは以下の通りです。
No route matches {:action=>"create", :controller=>"undertakings", :undertaking=>{:title=>"MyString", :content=>"MyText", :result=>false}}
作成アクションのルートは次のとおりです。
asking_undertakings POST /askings/:asking_id/undertakings(.:format) undertakings#create
specファイルにasking_idがないと思われるかもしれません。 しかし、私は何をすべきか理解できません。 教えてください。
ありがとうございます!できます!! –