アプリに投稿を作成できるユーザー モデル (エージェント) があります。ダッシュボードからこれを行うことができます。また、ダッシュボード内に既存の投稿をすべて表示します。エラーが発生することを確認するためにテストしているコンテンツのない新しい投稿を作成しようとすると、問題が発生します。コンテンツを含む投稿の作成は機能しますが、コンテンツを含まない投稿を作成すると、@posts インスタンス変数が nil であるというエラーが引き続き発生します。私が何かを逃したかどうかわからないのですか?
ダッシュボード ビュー:
.container
.column.span9
- if current_agent
= render 'home/shared/agent_post_panel'
= render 'home/shared/agent_dashboard_tabs'
agent_dashboard_tabs:
.tabs-container
#posts
.content
- if @posts.any? //This is where the error is triggered
= render partial: 'shared/post', collection: @posts
ダッシュボードのコントローラー:
class HomeController < ApplicationController
before_filter :authenticate!, only: [:dashboard]
def index
end
def dashboard
if current_agent
@post = current_agent.posts.build
@posts = current_agent.posts
end
end
end
私のポストコントローラー:
class PostsController < ApplicationController
before_filter :authenticate_agent!
def create
@post = current_agent.posts.build(params[:post])
if @post.save
flash[:notice] = "Post created!"
redirect_to dashboard_path
else
flash[:error] = "Post not created"
render 'home/dashboard'
end
end
end
テスト:
feature 'Creating posts' do
let(:agent) { FactoryGirl.create(:agent) }
before do
sign_in_as!(agent)
visit dashboard_path
end
scenario "creating a post with valid content" do
fill_in 'post_content', :with => 'I love donuts'
expect { click_button "Post" }.to change(Post, :count).by(1)
end
scenario "creating a post with invalid content" do
expect { click_button "Post" }.not_to change(Post, :count)
click_button "Post"
page.should have_content("Post not created")
page.should have_content("can't be blank")
end