ActiveAdmin:在另一个表单中将表单显示为IFRAME

时间:2011-10-24 16:29:04

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

我正在使用Gallery模型和Images模型开发一个应用程序,其中每个图库都有_and_belong_to_many图像。

我目前正在开发用于创建/编辑图库的表单。从这个表单中,我希望用户能够添加现有图像并将新图像上传到图库。经过多次讨论之后,我能够使用Rails“嵌套模型表单”功能来实现这一目标,但从UI的角度来看,最终结果并不令人满意。

我意识到我真正需要的是我的图库表单中包含图像表单的IFRAME。如何将图像格式包含为IFRAME,而不包含通常与表单一起呈现的所有周围标记(例如标题,标题栏和页脚)?请注意下面的代码,当我在“new_iframe”控制器方法中调用“render”时,我已经在使用“:layout => false”。

这是我的图片资源文件:

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 个答案:

答案 0 :(得分:0)

模型文件中的

(媒体是您的图库模型)

    accepts_nested_attributes_for :media, 
:reject_if => lambda { |a| a[:image].blank? }, 
:allow_destroy => true  

在主动管理

    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