Question

J'ai de modèles, L'utilisateur et Enseignant.

L'utilisateur

class User < ActiveRecord::Base
  ...
  has_one :teacher
  accepts_nested_attributes_for :teacher
end

Enseignant

class Teacher < ActiveRecord::Base
  attr_accessible :teacher_last_name
  belongs_to :user
  ...
end

J'ai aussi en forme contrôleurs/vues/admins/new_teacher.hmtl.erb

<%= form_for @user, :url => create_teacher_url, :html => {:class => "form-horizontal"} do |f| %>
  <%= field_set_tag do %>
    <% f.fields_for :teacher do |builder| %>
      <div class="control-group">
        <%= builder.label :teacher_last_name, "Last name", :class => "control-label" %>
        <div class="controls">
          <%= builder.text_field %>
        </div>
      </div>
    <% end %>

    <%= f.submit "Create", :class => "btn btn-large btn-success" %>
<% end %>

Admin contrôleur

class AdminsController < ApplicationController
  def new_teacher
    @user = User.new
    @teacher = @user.build_teacher
  end
end

Donc, j'ai 2 questions:

  1. Pourquoi mon formulaire n'apparaît pas?
  2. Est <%= builder.text_field %> correct?
Était-ce utile?

La solution

J'ai trouvé une solution.C'est incroyable facile à réparer.Dans FieldS_Pur, vous devez utiliser <%= au lieu de <%.

Dans mon cas, ma vue ressemble maintenant à:

<%= form_for @user, :url => create_teacher_url, :html => {:class => "form-horizontal"} do |f| %>
  <%= field_set_tag do %>
        <%= f.fields_for :teacher do |builder| %>
      <div class="control-group">
        <%= builder.label :teacher_last_name, "Last name", :class => "control-label" %>
        <div class="controls">
          <%= builder.text_field :teacher_last_name %>
        </div>
      </div>

  <% end %> 
  <%= f.submit "Create", :class => "btn btn-large btn-success" %>
<% end %>

Autres conseils

  1. Avez-vous construit un nouveau teacher objet de la forme à utiliser?- Vous assurer que vous avez quelque chose comme cela dans votre contrôleur: @user.build_teacher
  2. Non, vous devez fournir l'attribut que vous souhaitez utiliser, builder.text_field :teacher_last_name
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top