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]

Répondre à