feature "comment" do
given(:user) do
build(:user)
end
background do
user1=create(:user)
user1.id=1
login_as(user1)
end
scenario "can create comment" do
@undertake=create(:undertake)
visit undertake_path(@undertake)
within("form#undertake-form-test") do
fill_in "content" , with: "heyheyhey"
end
click_button 'send-btn'
expect(page).to have_content 'heyheyhey'
end
end
これはspec/features/comment_spec.rbです。以下はcontrollers/undertakes_controller.rbです。rspec、nilのための未定義メソッド `id ':NilClass
class UndertakesController < ApplicationController
def show
@undertake=Undertake.find_by(id: params[:id])
@comment=current_user.comments.new
end
これはviews/undertakes/show.html.erbです。
<p><%= @undertake.id %></p>
およびspec/factories/undertakes.rb。
FactoryGirl.define do
factory :undertake do
association :ask
association :user
id 1
user_id 2
ask_id 1
title "MyString"
content "MyText"
result false
end
end
routes.rbを
resources :asks , except:[:edit, :update] do
resources :undertakes , only:[:create , :show , :destroy] , shallow: true do
resources :comments , only:[:create]
end
end
は今、なぜ私はエラーActionView::Template::Error:undefined method id for nil:NilClass
を持っています。私を助けてください。
あなたの 'routes.rb'ファイルを表示してください。 –
ここにroutes.rbがあります。お願いします。 リソース:コメントのみ:[:create] end: –
リソース:asks、except:[:edit、:update] do リソース:実行する、:表示する、破棄する、 end –