2017-01-18 4 views
0

Ich habe einen Controller für Walkers mit der folgenden Aktion:Formular Parameter unpermitted von in Schienen-app

def update 
    if !current_user 
     redirect_to "/walkers" 
    end 
    walker = Walker.find(params[:id]) 
    walker.update(walker_params) 
    walker.save 
    redirect_to admin_path 
end 

Es gibt auch eine private Methode ist:

def walker_params 
     params.require(:walker).permit(:id, :fname, :lname, :role, :active, :role, :avatar) 
    end 

In meinen Ressourcen Ich habe:

resources :walkers 

Dann habe ich ein Formular mit dem folgenden Erb.

<%= form_for :walker, url: "/walkers/#{w.id}", method: "put" do |f| %> 
     <%= f.hidden_field active: false %> 
     <%= f.submit "Deactivate", class: "font-color-warning mdl-button" %> 
    <% end %> 

Mein Schienen Server gibt mir die folgende Fehlermeldung:

Unpermitted parameter: {:active=>false} 

Die Parameter sind gesendet werden:

Parameters: {"utf8"=>"✓", 
"authenticity_token"=>"7vkuiaZG32x0EPr9IR9VvgURTQ7uniZH/7IPfMYdvb3AIGq8Psd+o9ykfs6qMKcozXYm08BKJ0/M3s5Q2DwiGg==", 
"walker"=>{"{:active=>false}"=>""}, 
"commit"=>"Deactivate", 
"id"=>"1"} 

Meine Erwartung war, dass ich anzog falsch auf dem: aktiv Parameter das Walker-Objekt, das bei PUT 'walkers/w.id' gefunden wurde. Meine Parameter zeigen, dass meine Erwartungen nicht korrekt sind.

Ich möchte eine Lösung für mein Problem. Idealerweise verstehe ich, warum meine Parameter mit walker"=>{"{:active=>false}"=>""} gesendet werden, wenn mein Ziel ist, Parameter mit walker"=>{:active=>false} zu übermitteln.

Ich habe kein @walker-Objekt zum Referenzieren, da ich mit | w | durchschlinge.

Antwort

1

Änderung

<%= f.hidden_field active: false %> 

zu

<%= f.hidden_field :active, value: false %> 
+0

Diese Antwort mein Problem löst. Vielen Dank. – aisflat439

+0

Würdest du bitte akzeptieren, da es dein Problem löst. –

+0

Ja, ich muss noch eine Minute warten, heißt es. – aisflat439

Verwandte Themen