2012-10-05 66 views
0

不知怎的,我無法弄清楚,爲什麼我的要求規格失敗,因爲錯誤:rspec的find_by_id和錯誤的參數數目(0 1)

的參數錯誤數(0 1)

當我使用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_by_id,因爲我不想提出404錯誤,而是希望檢查是否爲零,然後將用戶引導至合適的頁面。

回答

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 
2

你可以嘗試兩種:

visit message_path(@message) 

visit message_path(id: @message.id) 

,並報告

+0

還訪問message_path(id:@ message.to_param) –

相關問題