2012-07-31 27 views
11

Không biết tại sao tôi không thể hình dung ra điều này vì nó có vẻ đơn giản, nhưng về cơ bản, tôi đang cố gắng tạo liên kết đến một hành động (I muốn "Xuất bản" xuất hiện bên cạnh hiển thị, chỉnh sửa, xóa) cho từng tài nguyên trong Quản trị viên đang hoạt động.Tên tài nguyên mục hành động tùy chỉnh của quản trị viên hoạt động

tôi đã sử dụng mã họ đề nghị trên wiki của họ:

action_item do 
    link_to "button label", action_path(post) 
end 

Vấn đề là, tôi nhận được một lỗi vì đường ray không biết gì "bài" này. Không phải. Phiên bản Wiki trên Github có cùng mã, ngoại trừ chúng sử dụng "tài nguyên" thay cho bài viết. Tôi đã không chắc chắn nếu đó là họ ngụ ý rằng tôi sẽ sử dụng tên tài nguyên của riêng tôi ở đó, hoặc nếu bạn đang thực sự phải sử dụng biến "tài nguyên". Tôi đã thử trường hợp sau và nhận được lỗi "Không thể tìm thấy không có ID".

Câu hỏi đặt ra là, tôi đặt tên biến ở đâu? Họ đang sử dụng làm trình lặp của họ là gì?

Trả lời

10

tôi sử dụng để sử dụng này:

action_item only: :show do |resource| 
    link_to('New Post', new_resource_path(resource)) 
end 

CẬP NHẬT

action_item only: :show do 
    link_to('New Post', new_resource_path) 
end 

Cảm ơn Alter Lagos

+0

Giải quyết vấn đề này một lúc trước và quên đóng câu hỏi. Tôi tin rằng điều này đã trở thành giải pháp của tôi. Không nhận ra khối được mong đợi là một biến số –

+1

@StephenCorwin Điều này trả về một đối tượng 'ActiveAdmin :: Views :: ActionItems' (với active_admin 0.6), không liên quan gì đến mô hình được sử dụng. Câu trả lời đúng là những gì @LuisOrtegaAraneda đã giải thích. –

5

Tôi đã thực hiện điều này bằng một mảnh rất giống mã, xem:

Bên trong tôi: app/admin/posts.rb

member_action :publish, method: 'get' do 
    post = Post.find(params[:id]) 
    post.publish! 
    redirect_to admin_post_path(post), notice: 'Post published!' 
end 

Trong trường hợp của tôi, tôi muốn các nút liên kết có sẵn chỉ trong hành động show.

action_item :only => :show do 
    if post.status == 'pending' 
    link_to 'Publish', publish_admin_post_path(post) 
    elsif post.status == 'published' 
    link_to 'Expire', expire_admin_post_path(post) 
    else 
    end 
end 

Hy vọng điều này sẽ giúp bạn!

6

Trong ActiveAdmin bạn phải sử dụng resource để tham khảo một đối tượng mà bạn đang sử dụng.

Khi bạn sử dụng resource trong một hành động như index, có thể bạn sẽ gặp lỗi khi ActiveAdmin không hoạt động với một. Để ngăn chặn điều này, chỉ rõ hành động mà bạn muốn nút xuất hiện trong

Để xác định một hành động, cung cấp cho các lập luận only với một loạt các hành động mà bạn muốn nút xuất hiện trong Ví dụ:..

action_item :only => [:show, :edit] do 
    ... 
end 
Các vấn đề liên quan