问题标签 [alias-method-chain]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 覆盖 Rails 核心 mixin 方法,仍然可以调用旧方法
好的标题令人困惑,我先告诉你我的问题:
该polymorphic_url
方法在 Rails 2.2.1 中进行了更改,以包含我需要的一些额外功能。但是,我想让应用程序在旧版本的 Rails 中仍然可以工作,所以如果旧版本的 Rails 正在运行,我想修补 2.2.1 的行为。
alias_method_chain
救援对吗?我无法让它工作。
现在我首先尝试将它放在帮助程序中 -alias_method_chain
失败,因为polymorphic_url
那时没有定义。所以我将相同的代码移到控制器中,它没有出错,但它被忽略了。然后我尝试使用插件将其修补到 ApplicationController::Base -polymorphic_url
仍未定义。
polymorphic_url
在模块 ActionController::PolymorphicRoutes 中定义。我真的不知道它何时/何处混合到控制器/视图中。
我怎样才能以我想要的方式包装这个方法?
ruby-on-rails - Rails - alias_method_chain 带有 'attribute=' 方法
我想通过一个模块在模型的方法上“添加”一些代码,当它被包含在内时。我想我应该使用 alias_method_chain,但我不知道如何使用它,因为我的“别名方法”是以“=”符号结尾的方法之一:
所以这就是我的模块现在的样子:
我在函数定义上遇到错误。如何解决这个问题?
ruby-on-rails - alias_attribute 和使用原始属性名称创建和方法会导致循环
我试图在我的模型中的一个属性中动态创建一个方法链。现在我有这个功能:
所以我收到一个带有属性名称的字符串,将其别名为' _without_filter '(alias_method 或 alias_method_chain 在这里失败,因为创建类时属性不存在),然后我创建了一个具有属性名称的新方法,我在其中过滤它内容。
但不知何故,当我调用“#{attribute_name}_without_filter”时,它调用了我的新方法(我认为是因为 alias_attribute 某种方式),并且程序进入了堆栈循环。
我试图重命名该属性,因此我可以将其名称用于方法...
有人可以请教我。
ruby-on-rails - ruby 中的别名方法链调用自身
我正在重写控制器渲染方法,但是,我想在 render_to_string 方法中使用旧方法。这些是我当前的代码:
发生的情况是,由于 render_to_string 使用了渲染(大概),我最终陷入了无限循环。我怎样才能让它回退到旧方法,只是为了那条线我的新渲染方法?
我从接受的答案中调整了代码,最终代码如下:
ruby-on-rails - 如何修改 Rails 3 表单生成器
覆盖的最佳方法是form_for
什么?
例如,在每个form_for(@post)
,
我想自动将<form>
id 属性设置为@post.object_id
,
并添加以下字段:hidden_field_tag :form_id, @post.object_id
我可以这样做alias_method_chain
吗?
ruby-on-rails - HABTM 属性设置器上的 alias_method_chain 不起作用
所以我有一个帖子和主题的HABTM。一个帖子 HABTM 主题和一个主题 HABTM 帖子。我需要做的是在调用的同时调用一些方法post.topics=()
这是我在 Post.rb 中尝试过的:
然而,这现在打破了post.topics=()
我不会得到错误或任何东西,但topics()
在更改后仍然是旧值topics=()
如果我在 中提出错误topics_with_extra_stuff=
,则跟踪会说 中存在错误topics=
,所以我知道它正在进入那里。我也知道extra_stuff()
那叫。
这是一个输出示例:
它不应该还有 2 个主题,只有 1 个。
感谢您的任何见解。
ruby - 如何省略方法链的中间部分?
假设我有一个带有save
方法的类,以及三个使用别名修改它的 mixin,例如
同样对于save_with_transaction
and save_with_timestamps
,按此顺序混合, soMyModel#save
调用save_with_timestamps
,调用save_with_transaction
,调用save_with_callbacks
,最后调用 original save
。
现在假设我想在没有交易的情况下保存。我可以打电话save_without_transaction
,但这不会调用代码来设置时间戳。
如何使用时间戳和回调保存我的模型,但没有事务?
我可以重新排序 mixins,但我的问题是省略中间,而不是专门的交易。如何省略方法链的中间部分?
注意 - 为了简洁起见,我使用了 RoR 的 alias_method_chain,但我的问题一般适用于 ruby
ruby - 类 << self、alias_method 和猴子修补 Mechanize::Cookie
我遇到了 Mechanize::Cookie 行为不端的问题,我想尝试对其进行修补。我的代码:
当我添加这个时,cookie 没有被添加,我不知道为什么。
编辑: 要查看问题,请尝试使用和不使用猴子补丁的代码:
如果没有补丁,您将看到一个完整的 cookie 罐,而它是一个空的。
ruby-on-rails - alias_method、alias_method_chain 和 self.included
我有点难以理解alias_method
/ alias_method_chain
。我有以下代码:
这正是我想要的 - 将“顶部有樱桃”附加到任何form_for
呼叫的顶部。
但我的理解是,由于某些原因,这不是好的代码。首先,它不会链接任何其他覆盖,form_for(?)
所以如果我要编写第二个form_for
附加“顶部还有另一个樱桃”的方法,它就不会显示。其次,alias_method
并且alias_method_chain
是过时的解决方案,我应该使用self.included
& 发送到模块。
但是我不能self.included
调用这个form_for
方法——它只是一直调用父方法。这是我正在尝试的:
我的上述解决方案有效,但我怀疑这是错误的做事方式。如果任何红宝石老手可以向我展示一种更优雅的方式 - 和/或为什么不调用第二个解决方案 - 我将不胜感激。
ruby-on-rails - 方法未定义的别名方法链
我有一个包含在 Rails Observer 中的模块。
目的是:
- 调用
after_save
和after_update
一个名为的方法check_integrity
check_integrity
在after_save
或/和after_update
如果在观察者中定义时调用。
所以简而言之,它应该总是调用check_integrity
.
我尝试了类似于以下代码的内容:
但它引发了一个错误:activesupport-3.0.17/lib/active_support/core_ext/module/aliasing.rb:31:in alias_method': undefined method after_update' for class TaskObserver' (NameError)
有人知道我怎么能做我想做的事吗?
谢谢!