2013-03-30 30 views
1

我試圖通過interviews_participants控制器刪除interview_participant表中的條目。我已經通過了一些問題了,但我被陷在了一個錯誤:如何將正確數量的參數傳遞到Rails控制器

引發ArgumentError在InterviewsParticipantsController#銷燬「錯誤的參數數目(0 1)」

爲interview_participant的模型是...

class InterviewParticipant < ActiveRecord::Base 
    belongs_to :interview 
    belongs_to :participant 

    attr_accessible :interview_id, :participant_id 

並在interview_participants控制器destroy方法是

def destroy 
    @interview_participant = InterviewParticipant.where(:interview_id => params[:interview_id]).where(:participant_id => params[:participant_id]) 
    @interview_participant.destroy 

    respond_to do |format| 
     format.html { redirect_to interview_participant_url } 
     format.json { head :no_content } 
    end 
    end 

我想能夠從除去參與者通過這種銷燬方法刪除interview_participant表中的行。在面試的「表演」視圖中,我正在參與者,並希望有一個按鈕來刪除參與者。在Show View的採訪我......

<p> 
    <b>Participants</b> 
    <% @interview.participants.each do |participant| %> 
    <dd><%= participant.name %></dd> 
    <dd><%= button_to("Remove", { 
        :controller => "interview_participants", 
        :action => "destroy", 
        :interview_id => @interview.id, 
        :participant_id => participant.id }, 
        :method => :delete, 
        :confirm => "Are you sure?" 
        ) %></dd> 
    <% end %> 
</p> 

我想我傳遞正確的參數becasue我的網址/interview_participants/1?interview_id=3&participant_id=2(當我按下按鈕旁邊的參與者2和麪試3)。但我的瀏覽器中出現「錯誤的參數數量」錯誤。我一直在看這幾個小時,真的很感激任何幫助。

+1

您的模型類應以單數'InterviewParticipant'命名。 – depa

+0

對不起,這是我的一個錯字。它的確被稱爲InterviewParticipant。感謝您的幫助。 – user2227587

+0

我已經完成了正確的剪切並粘貼到上面的文本 – user2227587

回答

0

您遇到的問題是,您的查詢:

@interview_participant = InterviewParticipant.where(:interview_id => params[:interview_id]).where(:participant_id => params[:participant_id]) 

,因爲你正在使用where是返回一個數組。

你要麼需要調用這個.first以獲得單個對象或撥打.destroy_all

我會建議您更新查詢中使用find代替它返回一個單一的資源,如:

@interview_participant = InterviewParticipant.find_by_interview_id_and_participant_id(params[:interview_id], params[:participant_id]) 

以便您可以正確呼叫.destroy

+0

Jason,非常感謝。我曾嘗試過很多不同的方式來通過in_id和part_id來查找,但我不知道如何使用find_by_interview_id_and_participant_id作爲幫助。我想我有很多東西要學。 – user2227587

+0

只需提醒一下:基於'find_by'的查找器將在Rails 4中被棄用。最安全的路由是'where' +'first'。 – depa

+0

@depa我認爲find_by是唯一實際存在的http://edgeguides.rubyonrails.org/4_0_release_notes.html#active-record-deprecations 有這個變化嗎? –

相關問題