ton _form est un partial, il doit travailler avec la variable "form".
Le type de cette variable est un FormBuilder.
f.input fait appel à FormBuilder#object et celui ci est nul dans ton cas.
Soit tu fais un partial _form qui ne déclare pas le form_for, donc qui
laisse à l'appelant le soin de gérer l'instanciation du FormBuilder et tu
l'appelles comme ceci
<%= form_for(var) do |f| %>
<%= render :partial => 'path/to/form', :object => f %>
<% end %>
Soit tu gardes le form_for dans ton partial (sachant qu'on ne peut pas
imbriquer les formulaires comme on veut) et tu travailles comme ceci:
_form.html.erb
<%= form_for(var) do |f| %>
...
<% end %>
source.html.rb
<%= render :partial => 'path/to/form', :var => obj %>
Si tu te retrouves à devoir imbriquer des formulaires, c'est qu'il y a un
problème.
Si tu travailles sur une association (de type has_one, has_many), regarde
du coté de accepts_nested_attributes_for (model) et de fields_for (vue)
Tu te retrouveras avec quelque chose de la forme:
_form.html.erb
<%= f.label :field %>
<%= f.input :field %>
source.html.erb
<%= form_for(rec) do |f| %>
<%= f.label :field_1 %>
<%= f.input :field_1 %>
<%= fields_for(rec.assoc) do |assoc_form| %>
<%= render assoc_form %>
<% end %>
<% end %>
J'espère que cela résoudra ton problème.
PS: ne pas utiliser les accepts_nested_attributes_for et fields_for sur des
belongs_to. D'expérience, ca marche pas bien parce que je crois que ce
n'est pas fait pour ca.
Le 20 février 2012 22:20, Olivier Morel <[email protected]> a écrit :
> bonjour ou bonsoir
>
>
> j ai un formulaire avec divers champs que voici
>
> <p>
> <%= f.label :email %><br />
> <%= f.text_field :email %>
> </p>
> </div>
>
> <div id="sign_up">
> <p>
> <%= f.label :password %><br />
> <%= f.password_field :password %>
> </p>
> </div>
>
> A la suite de se formulaire j ai besoin d'appeler un champs qui se trouve
> dans un autre formulaire je fais donc un
> <%= render 'map/form' %>, a fin que les utilisateurs puissent le remplir
> aussi dans se formulaire .
>
> lorsque j 'affiche ma page j ai le droit à une jolie petite erreur
>
> Showing *.../railsaway/app/views/mapusers/_form.html.erb* where line *#1*
> raised:
>
> undefined method `model_name' for NilClass:Class
>
> Extracted source (around line *#1*):
>
> 1: <%= form_for(@mapuser) do |f| %>
> 2: #<% if @mapuser.errors.any? %>
>
> je déclare donc la variable @mapuser dans le controller user pour passer
> outre cette erreur
> mais il y a une petite voix qui me dit que c'est pas bien de faire ça, de
> plus si je le fais j ai une
>
>
> erreur du style form is invalide mais je voie bien tout mes champs.
>
> avez vous un conseil à me donner ??
>
>
> Rubyment
>
> Olivier
>
> ps : je suis débutant en ROR ainsi que en Objet
>
> --
> You received this message because you are subscribed to the Google Groups
> "RubyLyon" group.
> To post to this group, send an email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/rubylyon?hl=en-GB.
>
--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse
[email protected]