2011-10-17 8 views
3

私はギャラリービューの部分的な部分に新しい関連する画像を作成してはいけないと知っています。しかし、ActiveAdminの生成されたコントローラでこれを行うことはできません。コントローラは、リソースファイルの "Controller"メソッドを使用してカスタマイズすることができます。どのように私はビューの部分の代わりにコントローラメソッドを使用してこれを行うことができますか?ActiveAdmin:ビューの代わりにコントローラから新しいアソシエーションを作成する部分

ここに私のギャラリーリソースファイルされる:

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 %> 

UPDATE#1:を "コントローラやる" ブロック(内側に以下のメソッドを追加します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 

答えて

2

アクティブな管理者は、アクションマジックのためにInherited Resourcesに依存しています。任意のコントローラーアクションを開き、そのアクションに追加することができます。独自のインスタンス変数を作成することもでき、Active Adminは独自のインスタンス変数を作成する代わりに自動的に使用します。あなたはどこ新しいアクションでそれを構築する場合

あなたのケースでは、このような何かをするだろう:私はこれを行うと

ActiveAdmin.register Gallery do 
    controller do 
    def new 
     @gallery = Gallery.new 
     @new_image = @gallery.images.build 

     # call `new!` to ensure that the rest of the action continues as normal 
     new! 
    end 
    end 
end 
+0

は、私は、アクティブな管理のレイアウトを失います。アクティブな管理レイアウトを使用するように強制すると、レイアウトは得られますが、上部にナビゲーションは表示されません。基本的にはすべての利点が失われます。私は0.2.2を使用しています。0.3.xにアップグレードするとこの問題が解決されますか? –

+0

残念ながら、このようなバグがあったかどうかは覚えていません。しかしそれはv0.3で私のために働く –

関連する問題