2016-11-12 4 views
1

Ich habe bereits durch folgende Beiträge gegangen, ohne eine befriedigende Antwort zu bekommen:erlauben individuelle erstellt params in Schienen

can't permit custom params with strong parameters

Permit extra params in special cases with Strong Params in Rails 4

Was ich will, ist meine Gewohnheit erstellt params in Schienen-Controller zu ermöglichen, :

MEIN CODE

Vorlage

= form_tag ... 
    = select_tag :hour, options_for_select(options_for_hours), name: "clinic_hour[close_time][]", title: "Hours" 
    = select_tag :minute, options_for_select(options_for_minutes), name: "clinic_hour[close_time][]", title: "Minutes" 
    = select_tag :convention, options_for_select([["AM", "AM"], ["PM", "PM"]]), name: "clinic_hour[close_time][]" 
    = submit_tag ... 

Der obige Code params wie schafft:

Parameters: {"clinic_hour"=>{"close_time"=>["0", "0", "AM"]}} 

Aber in der Steuerung ...

-Controller

Wenn ich mag:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    :close_time 
) 
end 

Er sagt noch dazu in Schienen-Serverprotokoll:

Unpermitted parameters: close_time 
{} 

Was ist los?

Antwort

1

Sie haben eine Array hier, das heißt, Sie müssen konkret sagen, ein Array zu akzeptieren. Versuchen Sie folgendes:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    :close_time => [] 
) 
end 

Auch hier https://github.com/rails/strong_parameters Sie sehen können, welche alle Typen sind „zulässige“.

1

Wenn man sich die Readme für Strong Parameter Blick unter Permitted Scalar Values werden Sie sehen, dass da Sie mit einer Reihe von skalaren Werten arbeiten werden Sie es so bezeichnen müssen:

def clinic_hour_params 
    params.require(:clinic_hour).permit(
    close_time: [] 
) 
end 
Verwandte Themen