#ruby-on-rails #ruby-on-rails-3.1 #activeadmin
#ruby-on-rails #ruby-on-rails-3.1 #activeadmin
Вопрос:
Я разрабатываю приложение с моделью галереи и моделью изображений, где в каждой галерее есть_and_belong_to_many изображений.
В настоящее время я разрабатываю форму для создания / редактирования галереи. Из этой формы я хотел бы, чтобы пользователи могли как добавлять существующие изображения, так и загружать новые изображения в галерею. После долгих размышлений я смог использовать функциональность Rails «вложенные формы модели» для достижения этой цели, но конечный результат был неудовлетворительным с точки зрения пользовательского интерфейса.
Я понял, что мне действительно нужен IFRAME в форме моей галереи, который содержит форму изображения. Как я могу включить форму изображения в качестве IFRAME без всей окружающей разметки, которая обычно отображается вместе с формой (например, заголовок, строка заголовка и нижний колонтитул)? Обратите внимание, что в приведенном ниже коде я уже использую «:layout => false» при вызове «render» в моем методе контроллера «new_iframe».
Вот мой файл ресурсов изображения:
ActiveAdmin.register Image do
controller.authorize_resource
scope_to :current_admin_user
collection_action :new_iframe, :method => :get do
@image = Image.new
render :action => :new, :layout => false
end
controller do
...
end
index do
column :title do |image|
link_to image.title, edit_admin_image_path(image)
end
column :image do |image|
image_tag(image.thumb_path, :alt => "")
end
column :created_at
column :updated_at
default_actions
end
form :html => { :enctype => "multipart/form-data" } do |a|
a.inputs "Image", :multipart => true do
a.input :title
a.input :asset, :as => :file
end
a.buttons
end
end
Комментарии:
1. Я был бы очень удивлен, если бы поля формы во встроенном документе IFRAME были включены в параметры при отправке формы. Вы проверили, что это работает с очень простым полем формы HTML, первым?
2. Джон, идея в том, что IFRAME имеет свою собственную форму с собственной кнопкой отправки, что позволяет отправлять ее независимо от окружающей формы. Вы правы в том, что поля внутренней формы не будут отправлены вместе с окружающей формой.
Ответ №1:
в файле модели (где медиа — это ваша модель галереи)
accepts_nested_attributes_for :media,
:reject_if => lambda { |a| a[:image].blank? },
:allow_destroy => true
в active admin
f.inputs "Media" do
f.has_many :media do |j|
j.inputs "media" do
if !j.object.nil?
j.input :_destroy, :as => :boolean, :label => "Destroy?"
end
j.input :image, :hint => f.template.image_tag(j.object.image.thumb.url(), :width => '100')
end
end
end