2011-10-24 88 views
2

我正在开发一个带有图库模型和图像模型的应用程序,其中每个图库has_and_belong_to_many图像。ActiveAdmin:在另一个表单中将窗体显示为IFRAME

我目前正在开发创建/编辑图库的表单。从这个表格中,我希望用户既可以添加现有图片,也可以将新图片上传到图库中。经过多次讨论后,我能够使用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 
+0

我会*如果嵌入式IFRAME文档中的表单字段在提交表单时包含在参数中,那么会很惊讶。你有没有测试过,这是一个非常简单的HTML表单字段,首先? –

+0

乔恩,这个想法是,IFRAME具有自己的形式和自己的提交按钮,允许它独立于周围的表单提交。你是正确的,内部表单域不会与周围的表单一起提交。 –

回答

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 
相关问题