2016-02-12 59 views
2

我想要以下內容: 與活動管理員用戶界面構建器一起使用。紅寶石功能上下文與塊

爲什麼這個工程

def edit_action 
    column "" do |resource| 
     links = ''.html_safe 
     links += link_to I18n.t('active_admin.edit'), edit_resource_path(resource), :class => "member_link edit_link", :target => '_blank' 
     links 
    end 
end 
index do 
    edit_action 
end 

雖然這並不

edit_action = Proc.new{ 
    column "" do |resource| 
     links = ''.html_safe 
     links += link_to I18n.t('active_admin.edit'), edit_resource_path(resource), :class => "member_link edit_link", :target => '_blank' 
     links 
    end 
} 
index do 
    edit_action.call 
end 

是我得到的錯誤是,對象模型(例如)不具有的方法「一欄中」

+2

您可以將錯誤粘貼到您的非工作示例中嗎?有什麼不正確的工作? – Caillou

+0

'edit_action.call'預計無論'edit_action'返回的是一個'Proc'(或者相當的) - 是你的情況? –

+0

我不明白... –

回答

1

我會說這是一個範圍界定問題:def edit_action引入了一個新的環境,而Proc.new從父類繼承環境。在第一種情況下,column被識別,因爲ActiveAdminindex操作提供了它。在第二種情況下,定義Proc的範圍不知道任何關於column方法的任何信息,因此您會收到您提到的錯誤。

如果您在index do...塊內移動定義edit_action = Proc.new{...,它應該再次工作。