2016-07-14 17 views
1

Ich habe versucht, link_to auf Assignment/show.html.erb zu verwenden, um ein Gebot zu erstellen.Starker Parameter params.require mit link_to

Die show.html.erb:

<%= link_to "Create Bid", bids_path(:status => "Pending", :assignment_id => @assignment.id, :user_id => current_user.id), :method => :post %> 

Im bids_controller.rb diese Zeile Code hat nicht funktioniert:

params.require(:bid).permit(:status, :assignment_id, :user_id) 

ich an folgende ändern musste um es zu bekommen Arbeit:

params.permit(:status, :assignment_id, :user_id) 

verstehe ich nicht wirklich das Problem, aber ich denke, dass, wenn ich nicht den params.require Teil beinhaltete meine Der Code wird in Zukunft nicht so sicher vor Angriffen oder Problemen sein.

Wie auch immer, ich möchte den params.require Teil des Codes enthalten und ich hoffe, dass jemand in der Lage sein wird, mich zu führen, wie es geht. Vielen Dank!

+0

Sie die Gesamtheit des Codes einschließlich Ihrer relatoions versuchen zu zeigen, haben - wenn assigment ID und Benutzer-ID über die Verbindung übergeben werden, könnten sie nicht brauchen, um in der Erlaubnis sein. – MageeWorld

+0

Ja, ich verstehe das. Aber ich würde gerne die richtige Syntax kennen, um es zu tun :) – Benjamin

Antwort

2

params.require (: bid) .permit (: Status: assignment_id,: user id) bezeichnet die Weitergabe in params

bid: { 
    status: '', 
    assignment_id: 1, 
    user_id: 1 
} 

daher einen link_to Tag zu konstruieren, das das entspricht die folgende Struktur aufweisen würde, Struktur von dem, was Sie in starken Parameter, könnten Sie das folgende Beispiel

<%= link_to "Create Bid", bids_path(bid: {status: "Pending", assignment_id: @assignment.id, user_id:current_user.id}), :method => :post %> 
+0

Ich tat wie Sie gefragt und es hat funktioniert! Diese Codezeile funktioniert jedoch jetzt nicht: 'wenn Bid.exists? (User_id: params [: user_id], Zuweisungs-ID: params [: assignment_id])' – Benjamin

+0

Und darf ich wissen, was bedeutet Ihr vorgeschlagener Code? Ist es so, als würde man ein Objekt namens "Bid" definieren? @KennyChan – Benjamin

+0

Okay, ich habe das Problem gelöst, indem ich den Code in geändert habe 'wenn Bid.exists? (User_id: params [: bid] [: user_id], Zuweisungs-ID: params [: bid] [: assignment_id])' – Benjamin