ActiveAdmin: X has_and_belongs_to_many Y, хотите создать новый Y из формы для X - PullRequest
2 голосов
/ 12 октября 2011

У меня есть модель Галереи и модель Изображения, где у Галереи есть_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 Ответ

1 голос
/ 13 октября 2011

Предположим, у вас настроен атрибут accept_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 %>
...