ai didi

Ruby 函数上下文与 block

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:58 24 4
gpt4 key购买 nike

我正在尝试计算以下内容:与活跃的管理员用户界面生成器一起使用。

为什么会这样

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 被识别是因为 ActiveAdminindex 操作提供了它。在第二种情况下,定义 Proc 的范围对任何 column 方法一无所知,因此您会得到您提到的错误。

如果您将定义 edit_action = Proc.new{... 移动到 index do... block 中,它应该会再次工作。

关于Ruby 函数上下文与 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35359343/

24 4 0
文章推荐: Magento/PayPal - 请在下订单前同意所有条款和条件
文章推荐: python - 如何使用 Flask Migrate 创建 SIMILAR TO 约束?
文章推荐: paypal - 是否可以在没有 paypal 帐户的情况下使用沙箱?
文章推荐: Python UDP套接字如果没有收到数据则发送数据
太空宇宙
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com