0

どういうわけか、エラーが原因でリクエスト仕様が失敗する理由を理解できません:

引数の数が間違っています (1 に対して 0)

show メソッドで find_by_id を使用すると。

これが私の表示方法です

def show
  @message = Message.find_by_id(params[:id])

  # rest of code
end

これは私のリクエスト仕様です

require 'spec_helper'

describe "message pages" do
  subject { page }

  before do
    @message = FactoryGirl.create(:message)
  end

  it "should show message page properly" do
    visit message_path(@message.id)
    page.should have_content(@message.content) # this fails as message path ends up with wrong number of arguments error
  end
end

find_by_id() を find() に変更すると、すべて正常に動作します。404 エラーを発生させたくないので、find_by_id が必要です。代わりに、nil かどうかを確認し、ユーザーを適切なページに誘導します。

4

2 に答える 2

2

次のいずれかを試すことができますか:

visit message_path(@message)

また

visit message_path(id: @message.id)

そして報告する

于 2012-10-05T21:40:52.427 に答える
0

「find_by_id」(ちなみに非推奨です...)の代わりに、使用findして例外からレスキューすることができます。これははるかに簡単です。

def show
  begin
    @message = Message.find(params[:id])
  rescue ActiveRecord::NotFound
    do whatever you want on missing message
    return
  end
  # rest of code
end
于 2012-10-06T06:30:33.850 に答える