Question Rails transmettant l'objet form_for à partiel


Je voudrais passer le form_for object à un partiel:

<%= form_for @price do |f| %>
   ...
   <%= render :partial => "price_page", :object => @price, :as => :f %>
   ...
<% end %>

Quand j'appelle:

f.radio_button

Apporte l'erreur:

undefined method `radio_button' for #<Price:0x3cb1ed0>

Comment puis-je utiliser f comme d'habitude dans cette partie?


33
2017-09-03 11:01


origine


Réponses:


Essayez de transmettre un objet de formulaire en tant que local   <%= render :partial => "price_page", :locals=>{:f=>f} %>


51
2017-09-03 11:27



Vous pouvez transmettre l'objet générateur de formulaires en tant que variable locale, comme ci-dessous,

<%= form_for @price do |f| %>
     <%= render :partial => "price_page", :locals => { :f => f } %>
<% end %>

dans votre fichier partiel, vous recevrez un générateur de formulaire en tant que variable locale "f", vous pouvez utiliser comme ci-dessous,

  <% f.radio_button, {} %>

7
2017-09-03 11:31



J'ai couru à travers cette question en essayant de comprendre comment obtenir un générateur de formulaires dans une partie sans balise de formulaire supplémentaire. C'est le principal cas d'utilisation auquel je pourrais penser pour cette question, alors j'ajoute cette réponse pour les futurs visiteurs.

Pour résoudre mon problème, j'ai mon form_for dans ma mise en page et je ne rends que le modèle avec mon passage partiel. Dans mon partiel j'utilise champs_pour.

Regarde (quelque chose) comme ça:

= form_for @price do |f|
   ...
   = render partial: "price_page", object: @price, as: 'price %>
   ...

Ensuite, mon partiel a ceci:

= fields_for price do |f|
   ...

5
2017-09-01 21:01