Tôi đang sử dụng ActiveAdmin (0.4.0) với Rails (3.1.1).Làm cách nào để xử lý nhiều tài nguyên lồng nhau trong ActiveAdmin?
Tôi không thể tìm thấy cách hay/hack để xử lý nhiều tài nguyên lồng nhau.
Considerer 3 mô hình như:
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
Và các nguồn lực ActiveAdmin:
ActiveAdmin.register Program do
end
ActiveAdmin.register Knowledge do
belongs_to :program
end
ActiveAdmin.register Step do
belongs_to :knowledge
end
Trong routes.rb:
namespace :admin do
resources :programs do
resources :knowledges do
resources :steps
end
end
end
Dưới đây là các url đối với chỉ số của chương trình, kiến thức và các bước:
http://localhost:3000/admin/programs
http://localhost:3000/admin/programs/1/knowledges
http://localhost:3000/admin/programs/1/knowledges/1/steps
Không có vấn đề cho quản trị viên "tri thức" nhưng "Bước" admin không giữ bối cảnh lồng nhau.
Ví dụ, khi tôi sử dụng bộ lọc trong bướC# index Tôi đang chuyển hướng đến:
http://localhost:3000/admin/knowledges/1/steps?params ...
Nhưng nó phải có được:
http://localhost:3000/admin/programs/1/knowledges/1/steps?params ...
Cùng một vấn đề khi tôi tạo một tài nguyên mới:
http://localhost:3000/admin/knowledges/1/steps/new
Thay vì:
http://localhost:3000/admin/programs/1/knowledges/1/steps/new
Cùng p roblem với mẩu bánh mì ... vv ...
Những gì tôi đã cố gắng cho đến nay trong 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
Và trong app/views/admin/bước/_form. html.erb Tôi phải sử dụng trình tạo biểu mẫu activeadmin:
<%= 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 %>
Vâng ... Tôi bị kẹt.
Cách xử lý độc đáo này? Bất kỳ manh mối đánh giá cao ...
này dường như không làm việc với đường ray 3.2.6 và 0.4.4 active_admin –
Để xấu .. có thể hỏi Jose Valim về cách xử lý đúng với phiên bản AA mới ... và đăng giải pháp ở đây. Thx –
Nó hoạt động rất tốt trong phiên bản mới nhất của Rails 4.1' và 'ActiveAdmin 1.0pre' (từ chính). Cảm ơn bạn :). –