2012-07-31 71 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 
相關問題