9

私のパーシャルは、ページの上部と本来あるべき場所の 2 回レンダリングされています。どうやら、これは ActiveAdmin 固有のコード (table_for) がある場合にのみ発生します。

どんな助けでも大歓迎です。以下は、私が使用しているコードの一部です。

私のアクティブな管理ファイルでは:

panel "Children - SubProcesses" do
    text_node link_to "New", new_admin_sub_process_node_path(:parent_id => process_node.id)
    div render :partial => "/admin/process_nodes/child_list", :locals => { :parent => process_node }
end

_child_list.html.erb ファイル内

<%=
unless parent.children.empty?
table_for parent.children do 
    column :id
    column :name
    column "Actions" do |child_node|
            text_node link_to "View", admin_process_node_path(child_node)
            text_node " "
            text_node link_to "Edit", edit_admin_process_node_path(child_node)
            text_node " "
            text_node link_to "Delete", admin_process_node_path(child_node),  :method => :delete, :confirm => "Delete?"
    end
end
end
%>
4

1 に答える 1

5

私が読んだことから、ActiveAdminは現在のモデル/リソース名に基づいて部分的なパスを自動的に取得します。つまり、渡す"child_list"と結果は になり
"/admin/process_nodes/_child_list.html.erb"ます。

使用法は

div render "child_list", :locals {  :parent => process_node }

unlessまた、 ActiveAdmin パネル ブロック内にステートメントを含めた方がよいようです。サブプロセスがなければ、不要な render 呼び出しを追加する必要はありません。

panel "Children - SubProcesses" do
    text_node link_to "New", new_admin_sub_process_node_path(:parent_id => process_node.id)

    unless parent.children.empty?
        div render "child_list", :locals {  :parent => process_node }
    end
end

最後に、パーシャルを使用することが大きなメリットになるかどうかはわかりません。部分的に他に何かあるかどうかはわかりませんが、このように書くことができます。

panel "Children - SubProcesses" do
  text_node link_to "New", new_admin_sub_process_node_path(:parent_id => process_node.id)

  unless parent.children.empty?
    table_for parent.children do 
      column :id
      column :name
      column "Actions" do |child_node|
        text_node link_to "View", admin_process_node_path(child_node)
        text_node " "
        text_node link_to "Edit", edit_admin_process_node_path(child_node)
        text_node " "
        text_node link_to "Delete", admin_process_node_path(child_node),  :method => :delete, :confirm => "Delete?"
        end
    end
  end
end
于 2012-08-27T17:05:53.900 に答える