Estoy usando ActiveAdmin (0.4.0) con Rails (3.1.1).¿Cómo manejar múltiples recursos anidados en ActiveAdmin?
No puedo encontrar una buena forma/truco para manejar múltiples recursos anidados.
considerer 3 modelos:
class Program < ActiveRecord::Base
has_many :knowledges, :dependent => :destroy
end
class Knowledge < ActiveRecord::Base
belongs_to :program
has_many :steps, :dependent => :destroy
end
class Step < ActiveRecord::Base
belongs_to :knowledge
end
Y los recursos ActiveAdmin:
ActiveAdmin.register Program do
end
ActiveAdmin.register Knowledge do
belongs_to :program
end
ActiveAdmin.register Step do
belongs_to :knowledge
end
En routes.rb:
namespace :admin do
resources :programs do
resources :knowledges do
resources :steps
end
end
end
He aquí las direcciones URL para el índice de los programas, los conocimientos y los pasos:
http://localhost:3000/admin/programs
http://localhost:3000/admin/programs/1/knowledges
http://localhost:3000/admin/programs/1/knowledges/1/steps
No hay problema para el administrador "Conocimiento", pero el administrador "Paso" no mantenga el contexto anidado.
Por ejemplo, al utilizar filtros en el índice de los pasos # estoy redirigido a:
http://localhost:3000/admin/knowledges/1/steps?params ...
Pero debe haber sido:
http://localhost:3000/admin/programs/1/knowledges/1/steps?params ...
El mismo problema cuando creo un nuevo recurso:
http://localhost:3000/admin/knowledges/1/steps/new
en lugar de:
http://localhost:3000/admin/programs/1/knowledges/1/steps/new
mismo p roblem con la miga de pan ... etc ...
Lo que he probado hasta ahora en app/admin/steps.rb:
ActiveAdmin.register Step do
belongs_to :knowledge
config.clear_action_items!
action_item :only => :index do
link_to('Create Step', new_admin_program_knowledge_step_path(knowledge.program.id, knowledge.id))
end
index do
column :id
column :knowledge
column :title
column "Actions" do |step|
link_to("Voir", admin_program_knowledge_step_path(step.knowledge.program, step.knowledge, step), :class => "member_link show_link") +\
link_to("Editer", edit_admin_program_knowledge_step_path(step.knowledge.program, step.knowledge, step), :class => "edit_knowledge member_link edit_link", :id => "knowledge_#{dom_id(knowledge)}") +\
link_to("Supprimer", admin_program_knowledge_step_path(step.knowledge.program, step.knowledge, step), :class => "member_link delete_link", :method => :delete, :confirm => "Delete?")
end
end
filter :id
filter :title
filter :subtitle
filter :stage_type
filter :order_by
filter :created_at
filter :updated_at
form :partial => "form"
end
Y en app/views/admin/pasos/_form. html.erb Debo usar el activeadmin formbuilder:
<%= semantic_form_for(resource, :url => admin_program_knowledge_steps_path(resource.knowledge.program, resource.knowledge), :builder => ActiveAdmin::FormBuilder) do |f|
f.inputs "Step" do
f.input :knowledge, :as => :hidden
f.form_buffers.last << f.template.content_tag(:li, f.template.content_tag(:label, "Knowledge")+f.template.content_tag(:p, f.object.knowledge.title))
f.input :title
f.input :order_by
end
f.buttons
end %>
Bueno ... Estoy atascado.
¿Cómo manejar esto bien? Cualquier pista apreciados ...
Esto no parece funcionar con los carriles 3.2.6 y 0.4.4 active_admin –
A malo .. Quizás pregunte a José Valim sobre la forma correcta de manejar esto con la nueva versión de AA ... y publique la solución aquí. Thx –
Funciona muy bien en los últimos 'Rails 4.1' y' ActiveAdmin 1.0pre' (del máster). Gracias :). –