[英]Partial is rendered twice in ActiveAdmin
我的局部被渲染了两次:在页面顶部和应该放置的地方。 显然,只有当我具有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
%>
根据我的阅读,ActiveAdmin将根据当前的模型/资源名称自动获取部分的路径。 这意味着传递"child_list"
将导致
"/admin/process_nodes/_child_list.html.erb"
。
用法是
div render "child_list", :locals { :parent => process_node }
同样,在ActiveAdmin面板块中包含unless
语句似乎会更好。 这样,如果没有子进程,则无需添加不必要的渲染调用。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.