Ruby on rails 表单中的嵌套属性不可见
我可能错过了一些简单的东西,但我尝试了很多东西都没有用。 我需要能够编辑一个现有的曲目(使用ActiveAdmin)和保存更新其排他性状态的记录 我有一个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
轨道
模型
#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)时,那些相关字段仍然无效。嗨,很高兴你解决了你的问题。我想建议您确保您的对象不是零,但不想太迂腐,因为您的原稿提到了“编辑”,所以我假设已经创建了排他性。但是,是的,与零相关的对象通常是罪魁祸首,每次都会抓住你。