ActiveAdmin — как ссылаться на текущий объект?

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-3.1 #activeadmin

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-3.1 #activeadmin

Вопрос:

Как вы можете ссылаться на экземпляр объекта, который вы просматриваете в данный момент?

РАБОТАЕТ следующее

 ActiveAdmin.register Example do

  sidebar "test" do
    @name = example.name
  end

end
  

Следующее НЕ работает

 ActiveAdmin.register Example do

  member_action :some_stuff, :method => :put do
    @name = example.name
  end

end
  

Как я могу ссылаться на объект в member_action?

Или мне придется создать другой экземпляр?

Ответ №1:

Большая часть документации active admin устарела или вообще отсутствует. Скорее всего, вам придется прочитать исходный код и надеяться, что кто-нибудь прокомментирует функции, если вы хотите получить подробную информацию о том, как его использовать.

member_action Документация по функции выглядит следующим образом:

 # Member Actions give you the functionality of defining both the
# action and the route directly from your ActiveAdmin registration
# block.
#
# For example:
#
#   ActiveAdmin.register Post do
#     member_action :comments do
#       @post = Post.find(params[:id]
#       @comments = @post.comments
#     end
#   end
#
# Will create a new controller action comments and will hook it up to
# the named route (comments_admin_post_path) /admin/posts/:id/comments
#
# You can treat everything within the block as a standard Rails controller
# action.
# 
  

Это выглядит так, будто они ожидают, что вы выполните свой собственный поиск объекта в пользовательских действиях — Post.find(params[:id]) .

Ответ №2:

Вы можете использовать объект ‘resource’.

 ActiveAdmin.register Example do

  member_action :some_stuff, :method => :put do
    @name = resource.name
  end

end