Я знаю, что не следует создавать новое связанное изображение для моей галереи в частичном представлении галереи. Однако я не могу понять, как это сделать в сгенерированном контроллере ActiveAdmin, который, очевидно, можно настроить с помощью метода «Controller» в файле ресурсов. Как я могу сделать это, используя метод Controller вместо частичного представления?
Вот файл ресурсов моей галереи:
ActiveAdmin.register Gallery do
controller.authorize_resource
scope_to :current_admin_user
before_filter :block_access
controller do
def block_access
if params && params['q'] && params['q']['admin_user_id_eq']
params['q']['admin_user_id_eq'] = nil
end
end
end
form :partial => "form"
end
Вот мой частичный вид галереи:
<% new_image = @gallery.images.build %>
<%= 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 :for => [:images, new_image], :name => "New Image" do |image| %>
<% if image.object.new_record? %>
<%= image.input :title %>
<%= image.input :asset, :as => :file %>
<% end %>
<% end %>
<%= g.buttons %>
<% end %>
ОБНОВЛЕНИЕ # 1: Добавление следующих методов в блок "controller do" (основанное на предложении Thomas Watson ) сработало для создания / редактирования галерей.
def new
@gallery = Gallery.new
@new_image = @gallery.images.build
new!
end
def edit
@gallery = Gallery.find(params[:id])
@new_image = @gallery.images.build
edit!
end
def update
@gallery = Gallery.find(params[:id])
@new_image = @gallery.images.build
update!
end