2013-08-18 45 views
0

試圖找出此錯誤:如何在rspec中存儲此方法?

ActionView::Template::Error: 
     No route matches 
     {:controller=>"evaluations", 
      :action=>"note", 
      :student_group_id=># 
      <StudentGroup id: 2, 
      name: "Rainbow Class", 
      user_id: 1, 
      created_at: "2013-08-18 10:45:46", 
      updated_at: "2013-08-18 10:45:46", 
      number_of_students: nil, 
      type_of_group: "Adult class (18+)">, 
      :student_id=>nil} 

能正常工作在瀏覽器中,它只是在測試中失敗。

下面的代碼:

<%= link_to "!", eval_note_path({ student_group_id: @student_group, student_id: @student_group.students.first }) %> 

和測試 - 我知道我需要在一個枝節塊之前,但我不知道如何使rspec的做我想做的。環顧四周,對左右,但磕碰似乎相當依賴的情況下,我無法弄清楚:

describe "GET 'index" do 

    before(:each) do 
    @index = get :index 
    @student_group.stub(:students.first).and_return(1)  
    end 

    ... 

    it "should have an evaluation link" do 
    @index 
    response.should have_selector('a', 
            href: eval_note_path({ 
             student_group_id: @student_group, 
             student_id: @student 
             }), 
            content: "!") 
    end 

end 

回答

0

嘗試用@student_group.id它應該工作。

it "should have an evaluation link" do 
    @index 
    response.should have_selector('a', 
            href: eval_note_path({ 
             student_group_id: @student_group.id, 
             student_id: @student 
             }), 
            content: "!") 

感謝

+0

了'student_group_id'是好的 - 那就是獲取返回'nil' – dax

+0

,因爲你的學生對象是零隻有'student_id'。你必須在每個塊之前存儲你的學生對象。 –

+0

我採取了阻力最小的路徑,只是改變了路線路徑 - 我可以在稍後傳遞'student_id'而沒有大問題。謝謝! – dax