我正在尝试弄清楚以下内容:与活动管理员 UI 生成器一起使用。
为什么这样有效
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
我得到的错误是对象模型(例如)没有方法"列"
我会
说这是一个范围问题:def edit_action
引入了一个新环境,而Proc.new
从父环境继承了环境。在第一种情况下,column
被识别,因为ActiveAdmin
为index
操作提供了它。在第二种情况下,定义 Proc 的作用域对任何column
方法一无所知,因此您会收到提到的错误。
如果将定义移动到index do...
块内edit_action = Proc.new{...
,它应该会再次工作。