Active Admin自定义操作项资源名称

时间:2012-07-31 19:12:37

标签: ruby-on-rails resources activeadmin

不知道为什么我似乎无法解决这个问题,因为它似乎应该如此简单,但基本上,我正在尝试创建一个动作链接(我希望“发布”出现在下一个显示,编辑,删除)Active Admin中的每个资源。

我使用了他们在wiki上建议的代码:

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

问题是,我收到错误,因为rails不知道“post”是什么。这是零。 Github上的Wiki版本具有相同的代码,除了它们使用“资源”而不是帖子。我不确定他们是否暗示我会在那里使用我自己的资源名称,或者你是否应该实际使用变量“resource”。我尝试了后一种情况并得到了“找不到ID”错误。

所以问题是,我在哪里设置变量名称?他们使用什么作为迭代器?

3 个答案:

答案 0 :(得分:10)

我以前用过这个:

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

更新

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

感谢Alter Lagos

答案 1 :(得分:6)

我用一段非常相似的代码完成了这项工作,见:

在我的内部: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

就我而言,我希望链接按钮仅在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

希望这能帮到你!

答案 2 :(得分:6)

在ActiveAdmin中,您必须使用resource来引用您正在使用的对象。

resource之类的操作中使用index时,您可能会收到错误,因为ActiveAdmin无法使用。要防止出现这种情况,请指定希望按钮显示的操作。

要指定操作,请为参数only添加一个您希望按钮显示的操作数组。例如:

action_item :only => [:show, :edit] do
  ...
end