不知道为什么我似乎无法解决这个问题,因为它似乎应该如此简单,但基本上,我正在尝试创建一个动作链接(我希望“发布”出现在下一个显示,编辑,删除)Active Admin中的每个资源。
我使用了他们在wiki上建议的代码:
action_item do
link_to "button label", action_path(post)
end
问题是,我收到错误,因为rails不知道“post”是什么。这是零。 Github上的Wiki版本具有相同的代码,除了它们使用“资源”而不是帖子。我不确定他们是否暗示我会在那里使用我自己的资源名称,或者你是否应该实际使用变量“resource”。我尝试了后一种情况并得到了“找不到ID”错误。
所以问题是,我在哪里设置变量名称?他们使用什么作为迭代器?
答案 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
答案 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