Rails 3.2 - Accepts_nested_attributes_for وview - لا يظهر النموذج
-
13-12-2019 - |
سؤال
لا بد لي من النماذج، مستخدم و مدرس.
مستخدم
class User < ActiveRecord::Base
...
has_one :teacher
accepts_nested_attributes_for :teacher
end
مدرس
class Teacher < ActiveRecord::Base
attr_accessible :teacher_last_name
belongs_to :user
...
end
لدي أيضا النموذج في Controllers/views/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 %>
وحدة تحكم المشرف
class AdminsController < ApplicationController
def new_teacher
@user = User.new
@teacher = @user.build_teacher
end
end
لذا، لدي سؤالين:
- لماذا لا يظهر النموذج الخاص بي؟
- هل <%= builder.text_field %> صحيح؟
المحلول
لقد وجدت الحل.إنه أمر مدهش وسهل الإصلاح.في field_for يجب عليك استخدام <%= بدلاً من <%.
في حالتي تبدو وجهة نظري الآن كما يلي:
<%= 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 %>
نصائح أخرى
- هل بنيت جديدا
teacher
كائن للنموذج لاستخدامه؟- تأكد من وجود شيء مثل هذا في وحدة التحكم الخاصة بك:@user.build_teacher
- لا، أنت بحاجة إلى توفير السمة التي تريد استخدامها،
builder.text_field :teacher_last_name
لا تنتمي إلى StackOverflow