我有这个结构模型
class Tournament < ActiveRecord::Base
AGES = ["5u", "6u", "7u", "8u"]
has_many :courts, :dependent => :destroy
accepts_nested_attributes_for :courts, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => true
class Court < ActiveRecord::Base
belongs_to :tournament, :autosave => true
has_many :ages, :dependent => :destroy
accepts_nested_attributes_for :ages, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => true
class Age < ActiveRecord::Base
belongs_to :court
现在我的表单看起来像这样
_form.html.erb
<%= semantic_form_for @tournament do |f| %>
<%= f.inputs do %>
<%= f.input :name, :hint => "What is the name of the Tournament?" %>
<%= f.semantic_fields_for :courts do |builder| %>
<%= render :partial => "court_fields", :locals => { :f => builder } %>
<% end %>
_court_fields.html.erb
<div class="nested_fields">
<%= f.input :name, :input_html => {:class => "name"} %>
<%= f.semantic_fields_for :ages do |builder| %>
<%= render :partial => "age_fields", :locals => { :f => builder } %>
<% end %>
_age_fields.html.erb
Testing ...am I getting in here
<%= f.input :name, :as => :check_boxes, :collection => Tournament::AGES, :input_html => {:class => "age_limits"} %>
一切似乎都运行良好,除了在ages_fields部分中没有显示任何内容...不是复选框,甚至没有虚拟文本测试...我在这里
没有显示... .任何可能导致问题的想法
最佳答案
我能想到的明显原因是:您确定您的法院
有年龄
吗?
[编辑]法院
之间的关系对我来说确实很清楚。
但您的代码只会显示 法院
的年龄
(如果该法院已存在)。
根据您在评论中的输出:法院没有实际年龄,因此没有显示年龄。
如果您在 Controller 中执行此操作:
def new
@tournament = Tournament.new
@tournament.courts.build
@tournament.courts[0].ages.build
end
这将确保您至少拥有一个(空)球场和一个(空)年龄。
否则你也可以考虑使用像 cocoon 这样的 gem如果需要动态添加新元素。
希望这有帮助。
关于ruby-on-rails - Rails 嵌套模型与 formattastic 是否跳过一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7939757/