Ruby on rails 表单中的嵌套属性不可见

Ruby on rails 表单中的嵌套属性不可见,ruby-on-rails,activeadmin,nested-attributes,formtastic,Ruby On Rails,Activeadmin,Nested Attributes,Formtastic,我可能错过了一些简单的东西,但我尝试了很多东西都没有用。 我需要能够编辑一个现有的曲目(使用ActiveAdmin)和保存更新其排他性状态的记录 我有一个轨道模型 #app/models/track.rb: has_many :exclusivities, class_name: 'Exclusivity', dependent: :destroy accepts_nested_attributes_for :exclusivities attr_accessible :exc

我可能错过了一些简单的东西,但我尝试了很多东西都没有用。 我需要能够编辑一个现有的曲目(使用ActiveAdmin)和保存更新其排他性状态的记录

我有一个
轨道
模型

#app/models/track.rb:

  has_many :exclusivities, class_name: 'Exclusivity', dependent: :destroy

  accepts_nested_attributes_for :exclusivities

  attr_accessible :exclusivities_attributes

  #whether or not track is exclusive [boolean]
  attr_accessible :exclusive

  #whether or not track is fully exclusive and should be pulled off the front end [boolean]
  attr_accessible :full_exclusivity
我刚刚创建了一个独家模型

#app/models/exclusivity.rb    

  belongs_to :track
  attr_accessible :end_date, :industry, :track_id, :notes, :staff_notes
我的表格:

<%= semantic_form_for [:manage, @track], html: {data: {secondary:true}} do |f| %>

a bunch of inputs.....

<%= f.inputs "Track Exclusivity", class:'inputs align-left' do %>
  <%= f.input :exclusive %>
  <%= f.input :full_exclusivity,
  label: "Fully Exclusive" %>
  <%= f.fields_for :exclusivities do %>
    <%= f.input :notes %> 
    <%= f.input :staff_notes %> 
    <%= f.input :industry %> 
    <%= f.input :end_date, as: :date_picker %>
  <% end %>
<% end %>

一堆输入。。。。。
当我去编辑一个音轨时,音轨属性在那里,但是嵌套的(排他属性)不在那里(我可以选中音轨的排他和完全排他复选框)

我也尝试过为和
f使用
语义字段

我在这里遗漏了什么?


<%= form_for @person do |person_form| %>
  ...
  <%= person_form.fields_for :projects do |project_fields| %>
    <% if project_fields.object.active? %>
      Name: <%= project_fields.text_field :name %>
    <% end %>
  <% end %>
  ...
<% end %>
... 姓名: ...

中,您忘记将表单生成器传递到块的字段\u

<%= f.inputs "Track Exclusivity", class:'inputs align-left' do %>
  <%= f.input :exclusive %>
  <%= f.input :full_exclusivity,
  label: "Fully Exclusive" %>
  <%= f.fields_for :exclusivities do |ff| %>
    <%= ff.input :notes %> 
    <%= ff.input :staff_notes %> 
    <%= ff.input :industry %> 
    <%= ff.input :end_date, as: :date_picker %>
  <% end %>
<% end %>

实际问题是:如果曲目的排他性属性为空,则表单字段不会显示。因此,我会在您点击编辑控制器时使用以下代码自动构建相关属性。真有办法

 def edit
   @track = Track.includes(:licenses).find(params[:id])
      if @track.exclusivities.empty?
        @track.exclusivities.build
      end
    @track.save
 end 

谢谢你,伙计。你说得对,我忽略了这一点!尽管如此,当我去编辑(使用activeAdmin)时,那些相关字段仍然无效。嗨,很高兴你解决了你的问题。我想建议您确保您的对象不是零,但不想太迂腐,因为您的原稿提到了“编辑”,所以我假设已经创建了排他性。但是,是的,与零相关的对象通常是罪魁祸首,每次都会抓住你。