0

不知何故,我无法弄清楚为什么我的请求规范由于错误而失败:

参数数量错误(0 代表 1)

当我在 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() 则一切正常。我需要 find_by_id 因为我不想引发 404 错误,而是想检查是否为 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 回答