ruby-on-rails - rails ActiveAdmin 嵌套表单 has_one accepts_attributes_for formtastic 问题

标签 ruby-on-rails ruby-on-rails-3 formtastic nested-attributes activeadmin

我正在使用 ActiveAdmin 和 Rails 3.1 - 无法理解以下是否是错误,或者是否有某种方法可以正确执行但我不理解。我正在尝试使用具有一个关系的嵌套模型,以便我可以创建一个页面并在 1 步中填写它的元数据。 ——
(页面 has_one meta_data,accepts_nested_attributes_for meta_data)

示例 1)
在这个例子中,当我点击新页面时,元数据部分在那里,但没有输入字段——此外,如果我编辑记录,它会正确显示,但是字段集在第二部分中重复......如果我删除了 f.inputs 包装语义_field_for(这很有意义),然后它完全中断并且在元数据区域中没有显示任何内容......

form do |f|
  f.inputs "Page Information" do
    f.input :name
    f.input :uri
    f.input :view
    f.input :body, :as => :text
    f.input :active
  end

  f.inputs "Meta Data" do
    f.semantic_fields_for :meta_data do |meta_form|
      meta_form.inputs :title, :description, :keywords, :name => "Meta Information"
    end
  end  
end

我知道元数据可能没有被实例化,但我不确定我应该如何在表单块中做到这一点? (或者,如果我什至可以做到)——我能够让它工作的唯一方法是使用自定义表单,并在 View 中构建元数据,如下所示

2) 我是如何解决这个问题的,但看起来很笨拙
<%= semantic_form_for [:admin, @page] do |f| %>
  <% @page.build_meta_data %>
  <%= f.inputs :name => "Page Information" do  %>
    <%= f.input :name %>
    <%= f.input :uri %>
    <%= f.input :view %>
    <%= f.input :body, :as => :text %>
    <%= f.input :active %>
  <% end %>
  <%= f.semantic_fields_for :meta_data do |meta_form| %>
    <%= meta_form.inputs :title, :description, :keywords, :name => "Meta Information" %>
  <% end %>

  <%= f.buttons %>
<% end %>

在此先感谢您的帮助或澄清。

(请注意版主,我在这个问题上开始了另一个线程,但不是很清楚,也没有我现在做的解决方法,所以如果其中一个问题应该被删除,请删除另一个)

最佳答案

我为您找到了更好的解决方案。您可以使用 :for inputs 中的选项 helper 。

f.inputs "Meta Data", for: [:meta_data, f.object.meta_data || MetaData.new] do |meta_form|
  meta_form.input :title
  meta_form.input :description
  meta_form.input :keywords
end

我认为这也可能有效,但我没有检查
f.inputs :title, :desctiption, :keywords, 
  name: "Meta Data",
  for: [:meta_data, f.object.meta_data || MetaData.new]

关于ruby-on-rails - rails ActiveAdmin 嵌套表单 has_one accepts_attributes_for formtastic 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159884/

相关文章:

ruby-on-rails - 如何以编程方式将 ActiveModel 验证器从一个模型复制到另一个模型?

ruby-on-rails - 使用'counter_cache'时如何调用after_save回调?

ruby-on-rails - 在特定时间调用模型方法(Ruby on Rails)

ruby-on-rails - collection_select 中的 Rails 编码 UTF-8 错误

mysql - MySql 和 Rails 中的时区

ruby-on-rails-3 - 使用 Devise 登录后奇怪的重定向

ruby-on-rails - 缓存表中的所有模型

javascript - 将编辑器与 Active Admin 一起使用

ruby-on-rails - Rails,自定义验证和错误未显示

ruby-on-rails - 在Rails中使用具有formtastic的关联(has_many)模型中的字段