2017-09-01 63 views
0

我的方法是在更新屬性的值時使用link_to錯誤,或者在我的語法中出現簡單的問題嗎?關於如何解決這個問題的任何想法?param丟失或值爲空錯誤修補程序link_to

我嘗試使用link_to更新單個屬性時發生錯誤。我有我的看法如下代碼:

<%=link_to "Pay", event_attendee_path(event_attendee, :paid => true), :method => :patch%> 

我使用的是循環內的link_to:<% @event_attendees.each do |event_attendee| %><%end%>

我得到的錯誤:「參數丟失或爲空值:event_attendee」當我嘗試運行我的代碼。

我在我的控制器中的以下內容:

def event_attendee_params 
    params.require(:event_attendee).permit(:attendee_id, :event_id, :paid) 
end 

耙路線:

event_attendee GET /event_attendees/:id(.:format)  event_attendees#show 
        PATCH /event_attendees/:id(.:format)  event_attendees#update 
        PUT /event_attendees/:id(.:format)  event_attendees#update 
        DELETE /event_attendees/:id(.:format)  event_attendees#destroy 

回答

1

的問題是,當你通過一個模型的路線作爲你已經完成了發送給服務器的唯一事情是模型的ID。在服務器中它是params [:id]。

在你的控制器中,你需要params有一個名爲event_atendee的鍵,但實際上你發送的唯一東西是id。

在修補程序路徑中,您通常需要使用id來獲取要更新的對象,所以到目前爲止都是如此。但是,您可能還想更新其他值?所以我會看看如何使用補丁方法在link_to中發送表單數據的文檔。

一種方法是在路線中包含密鑰,但可能有更好的方法。

+0

我明白了。謝謝,這幫助我理解了如何解決我的問題。 – Acrux

+0

@Acrux如果回答你的問題,你應該將答案標記爲答案! :-) – andy

0

應該

params.require(:id).permit(:attendee_id, :event_id, :paid) 

您需要:event_attendee但路線解析它,並將它作爲:id

0

你可以在你的控制器使用

@event_attendee.update(paid: params[:paid]) 

,或者在視圖中使用

form_for(@event_attendee) 

,如果你想使用permit_params

相關問題