Pourquoi pourquoi ...?Rails5, paramètres non autorisés sous forme imbriquée, tout en associant des objets existants
Trois modèles (FirstModel, SecondModel, JoinedModel), JoinedModel appartient aux deux autres et deux autres has_many
les uns des autres, par JoinedModel. JoinedModel accepts_nested_attributes_for
first_model et second_model. Il valide également la présence de first_model_id
et de second_model_id
.
modèle rejoint fortes params:
private
def joined_params
params.require(:joined_model).permit(:first_model_id, :second_model_id,
:first_models_attributes => [:id, :name],
:second_models_attributes => [:id, :full_name])
end
de _form de JoinedModel:
<%= form_for(joined_model) do |f| %>
<%= f.fields_for :second_models do |ff| %>
<%= ff.select(SecondModel.all.map {|c| [ c.full_name, c.id ] }, { include_blank: true }) -%>
(et même f.fields_for
pour FirstModel)
Quand je soumets ce formulaire, je reçois
Unperm ise params first_models, second_models
Et requête:
Paramètres: { "UTF8" => "✓", "authenticity_token" => "PTAC/OrOXJruAK0ZD + uoajJ4N + dZvpmZF8Ay0TOKF9HPO19d4tRBoWz0C4VoaOABYat8KzrryL8lp5ax + Y9ZJRg == ", " joined_model "=> {" first_models "=> {" first_model_id "=>" 1 "}, " second_models "=> {" second_model_id "=>" 1 "}}," commit "=>" Créer Rejoint modèle "}
Je ne sais pas pourquoi, comment, etc. formulaire essaie d'envoyer un hachage - "second_models"=>{"second_model_id"=>"1"}
censé être comme "second_model_id"=>"1"
et il fait comme ceci si mon formulaire utilise simplement f.number_field :first_model_id
au lieu de select
...
Vous devez ajouter une réponse à votre réponse, puis l'accepter.Se sent bizarre, mais est tout à fait acceptable (et encouragé)! Aussi, peut-être penser à un titre avec plus de clarté? Comment pouvons-nous aider les autres à trouver cette solution lorsqu'ils ont ce problème? – coreyward
oui, bonne idée, je vais le poster. A propos du titre, je pensais que c'est encore mieux comme ça - de nombreux mots clés pertinents (ne pense pas d'autres :)))) –
Votre titre doit être une question concise, pertinente ou une déclaration de problème. La recherche fonctionne très bien sans chargement de mot-clé. ;) – coreyward