1

「new!」なしで新しいコントローラーをオーバーライドする ActiveAdmin レイアウトを表示しません。しかし、「新しい!」を追加したとき。「@resource.build_synchronization」を行ったにもかかわらず、ネストされた「同期」フォームが表示されません。ここで何が間違っているのかよくわかりません。

ケース #1 (ActiveAdmin レイアウトがなくなった)

ActiveAdmin.register Resource do
  controller do
      # This code is evaluated within the controller class
      def new
        @resource = Resource.new
        @resource.build_synchronization
      end
  end
end

ケース #2 (ネストされたフォームの同期が表示されない)

ActiveAdmin.register Resource do
  controller do
      # This code is evaluated within the controller class
      def new
        @resource = Resource.new
        @resource.build_synchronization
        new!

      end
  end
end

ビュー\管理者\リソース\new.html.erb

<%= semantic_form_for [:admin, @resource] do |form| %>
    <%= form.inputs "Resource", :id => "resource" do %>
        <%= form.input :name %>
        <%= form.semantic_fields_for :synchronization do |sync| %>
            <% sync.inputs  :name => "Synchronization", :id => "synchronization"  do %>
                <%= sync.input :start_datetime, :as => :datetime %>
                <%= sync.input :repeat_interval, :as => :radio, :collection => @intervals %>
                <%= sync.input :repeat_type, :as => :select, :collection => ["Manual", "Automatic"] %>
            <% end %>
        <% end %>
    <% end %>
    <%= form.buttons %>
<% end %>
<% end %>

モデル:

class Resource < ActiveRecord::Base
  has_one :synchronization
  accepts_nested_attributes_for :synchronization
end


class Synchronization < ActiveRecord::Base
  belongs_to :resource
  has_many :mappings
  accepts_nested_attributes_for :mappings
  #validates_presence_of :start_datetime
end
4

2 に答える 2

2

CRUD アクションの場合、アクティブな管理者は標準レイアウトを使用しないでください

lib/active_admin/resource_controller.rb

    # Determine which layout to use.
    #
    #   1.  If we're rendering a standard Active Admin action, we want layout(false)
    #       because these actions are subclasses of the Base page (which implementes
    #       all the required layout code)
    #   2.  If we're rendering a custom action, we'll use the active_admin layout so
    #       that users can render any template inside Active Admin.
    def determine_active_admin_layout
      ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : 'active_admin'
    end

レイアウトを手動で定義できます

  controller do
    layout 'active_admin', :only => [:new]
  end
于 2011-11-09T01:13:32.297 に答える
1

form.semantic_fields_forステートメントをform.inputsブロック内に配置する必要があります。

form.buttonsまた、form.semantic_fields_forブロックもブロックも入れませんform.inputs。これは、ブロックの下の直接の子である必要がありsemantic_form_forます (これは問題の原因ではなく、通常これを置く場所です)。

于 2011-10-10T09:21:36.407 に答える