2012-07-31 72 views
11

不知道为什么我似乎无法弄清楚,因为它似乎应该是如此简单,但基本上,我试图创建一个链接到一个动作(我希望“发布”出现在旁边显示,编辑,删除)Active Admin中的每个资源。主动管理自定义操作项目资源名称

我用他们自己的维基建议代码:

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

问题是,我得到一个错误,因为Rails不知道什么是“后”是。这是零。 Github上的Wiki版本具有相同的代码,除了他们使用“资源”而不是发布。我不确定这是否意味着我会在那里使用我自己的资源名称,或者如果您应该实际使用变量“资源”。我试过后一种情况,得到了“找不到ID”错误。

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

回答

10

我用这个:

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

UPDATE

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

感谢Alter Lagos

+0

前一段时间解决了这个问题,忘记了解决问题。我相信这最终会成为我的解决方案。没有意识到该块预期变量 – 2013-04-16 00:49:17

+1

@StephenCorwin这是返回一个'ActiveAdmin :: Views :: ActionItems'对象(与active_admin 0.6),这与使用的模型无关。正确的答案应该是@LuisOrtegaAraneda解释的。 – 2014-02-12 15:25:53

5

我有一个非常相似的一段代码来实现这一点,请参见:

里面我: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 

希望这可以帮助你!

6

在ActiveAdmin你必须使用resource引用您正在使用的对象。

当您在诸如index之类的操作中使用resource时,由于ActiveAdmin不能与其中一个配合使用,您可能会收到错误。为了防止这种情况,指定你想要的按钮出现在行动

要指定一个动作,给争论only你想要的按钮出现在动作的阵列,例如:。

action_item :only => [:show, :edit] do 
    ... 
end 
相关问题