Environnement d'exploitation Ruby 2.6.5 Rails 6.0.3.2
Il m'a fallu un certain temps pour comprendre la différence entre quand un paramètre fort est requis et quand il n'est pas requis, alors je l'ai posté.
ruby:new.html.erb
<%= form_with model:@hoge, local: true do |f| %>
<%= f.text_area :fuga %>
<%= f.submit "Publier" %>
hoges_controller.rb
def create
@hoge = Hoge.create(hoge_params)
end
private
def hoge_params
params.require(:hoge).permit(:fuga)
end
Dans le cas ci-dessus, require (: hoge) est requis pour le paramètre strong. C'est parce que fuga est inclus dans la multitude de paramètres qui sont envoyés lorsque vous cliquez sur Publier. En fait, si vous vérifiez les paramètres dans l'action de création à l'aide de binding.pry, ce sera comme suit. Supposons que vous ayez entré "exemple" dans fuga.
{"authenticity_token" => "+ wXNK4Z3C0wrq4AfslPS5zl / 2LSUE6BvV + 23hQpkHryrsVzPb0siDIkarIsNYLK2R502fuXlqQ ==", "hoge"> = {"commit"> "Exemple = {" commit ">"} "," action "=>" créer "}
ruby:new.html.erb
<%= form_with url:hoge_path, local: true do |f| %>
<%= f.text_area :fuga %>
<%= f.submit "Publier" %>
hoges_controller.rb
def create
@hoge = Hoge.create(hoge_params)
end
private
def hoge_params
params.permit(:fuga)
end
Dans le cas ci-dessus, le paramètre fort n'a pas besoin d'être requis. C'est parce que hoge n'existe pas dans les paramètres envoyés lorsque vous cliquez sur Publier, mais fuga est inclus directement. En fait, si vous vérifiez les paramètres dans l'action de création à l'aide de binding.pry, ce sera comme suit. Supposons que vous ayez entré "exemple" dans fuga.
{"authenticity_token" => "+ wXNK4Z3C0wrq4AfslPS5zl / 2LSUE6BvV + 23hQpkHryrsVzPb0siDIkarIsNYLK2R502fuXlqQ ==", "fuga" => "Exemple", "Valider" => contrôleur "créer"}
Comme mentionné ci-dessus, vous pouvez voir que hoge n'existe pas contrairement à avant.
En d'autres termes, il s'avère que le paramètre strong require est utilisé pour extraire ce que vous avez entré dans les paramètres (fuga dans ce cas) d'un élément (hoge dans ce cas).
En gros, require est requis lorsque le modèle est spécifié dans form_with. Si vous ne le spécifiez pas, vous pouvez dire que require n'est pas nécessaire.
Recommended Posts