ActiveAdmin:X has_and_belongs_to_many Y,想要从X的表单创建一个新的Y.

时间:2011-10-12 18:55:39

标签: ruby-on-rails ruby-on-rails-3.1 activeadmin

我有一个图库模型和一个图像模型,其中一个图库有_and_belongs_to_many图像。

现在,通过图像表单上传新图像,并使用复选框从图库表单中选择图库的图像。我想保留现有图像的现有复选框选择方法,但也能够从图库窗体中上传新图像(同时创建新图像和图库之间的关联)。

这是我的图库形式:

<%= semantic_form_for [:admin, @gallery] do |g| %>
  <%= g.inputs "Details" do %>
    <%= g.input :title %>
    <%= g.input :images, :as => :check_boxes, :label_method => Proc.new { |image| image_tag(image.thumb_path, :alt => "") + content_tag("h3", image.title)  } %>
  <% end %>
  <%= g.inputs "Images" do %>
    <% g.has_many :images do |i| %>
      <%= i.input :title %>
      <%= i.input :asset, :as => :file %>
    <% end %>
  <% end %>
  <%= g.buttons %>
<% end %>

浏览表单时,我看到以下错误:

undefined method `has_many' for #<Formtastic::SemanticFormBuilder:0xb410d4c>

我还在学习Rails,而且我对ActiveAdmin完全不熟悉,所以我可能会遗漏一些明显的东西。如果有帮助,我很乐意提供更多背景信息。

感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:1)

假设你设置了accepts_nested_attributes ......

首先创建一个空白图像 @gallery.images.build 然后为新图像构建输入字段

<% g.inputs :for => :images do |image| %>
  <% if image.new_record? %>
        <%= image.input :title %>
        <%= image.input :asset, :as => :file %>
  <% end %>
<% end %>