问题标签 [method-missing]

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.

0 投票
2 回答
2186 浏览

ruby-on-rails - Rails:调用“id”主键方法时出现“堆栈级别太深”错误

这是另一个问题的转贴,这次最好隔离。在我的 environment.rb 文件中,我更改了这一行:

到这一行:

从那以后,这个电话:

当 config.cache_classes = false 时,在开发环境中第二次运行后出现“堆栈级别太深”错误。如果 config.cache_classes = true,则不会出现问题。该错误是由 active_record/attribute_methods.rb 第 252 行附近的以下代码引起的:

对“id”函数的调用重新调用method_missing,没有什么可以阻止id被一遍又一遍地调用,导致堆栈级别太深。

我正在使用 Rails 2.3.8。Category 模型 has_many :subcategories。该调用在上述行的变体上失败(例如 Category.first.subcategory_ids,使用“each”而不是“map”等)。

任何想法将不胜感激。

谢谢!阿米特

0 投票
1 回答
617 浏览

ruby-on-rails - Ruby on Rails 插件:acts_as_taggable_on_steroids。不断收到“method_missing”未定义的局部变量或方法“acts_as_taggble_on”

我正在尝试为我的 rails 应用程序实现标记系统。我使用了流行的插件acts_as_taggable_on_steroids,并按照说明安装它。然后我在模型中包含了acts_as_taggable,我想在模型中添加标签,但是当我尝试启动服务器时,我不断收到错误method_missing': undefined local variable or methodacts_as_taggable' for # (NameError)

我在google上查看,作者建议尝试acts_as_taggable_on,但这仍然没有解决问题。我已经在这个问题上苦苦挣扎了几个小时,但仍然不知道问题出在哪里。有人可以解释一下吗?

非常感谢大家的帮助!!

0 投票
1 回答
267 浏览

ruby - 在 Ruby 中使用和不使用括号调用 method_missing 的区别

是否有可能在 Ruby 中的 method_missing 声明中确定是否使用括号表示法调用了给定的 missing_method(没有任何参数),即:

或使用无括号符号:

?

我需要这个来解决我非常具体的测试问题。

0 投票
1 回答
366 浏览

ruby-on-rails - 如果实例是通过 ActiveRecord 关联定义的,则自定义 method_missing 被忽略

我有可能处于不同状态的提交,并编写了一个 method_missing 覆盖,允许我通过如下调用检查它们的状态

这非常有效。


由于各种可能不太好的原因,我也有一个模型Packlet,称为belongs_to a meeting和belongs_to a submission。然而,我惊讶地发现

返回一个NoMethodError。另一方面,如果我将#draft?方法硬编码到Submission中,则上述方法调用有效。


即使实例是通过 ActiveRecord 关联定义的,如何让我的 method_missing 方法被识别?

0 投票
2 回答
384 浏览

ruby - 使用 Ruby 解析 Tcl DSL

我希望能够解析一些参数没有被字符串包围的 Tcl 代码。

考虑这个 tcl 代码:

对于那些不熟悉 Tcl 的人,foo是方法名和bar参数(引号在 Tcl 中是可选的)。

前面的代码将输出:

是否可以使用 ruby​​ 解析完全相同bar的输入(未引用)?

等效的 ruby​​ 代码是:

当然,当它到达时会失败,bar因为它预计会被引用。

我试过修补method_missing

但它以相反的顺序解析:

有没有人对这类问题有一个干净的解决方案。我想避免对字符串进行标记,因为与词法分析相比,通过调用方法读取数据需要最少的工作。但如果我想做一些不可能的事情,我想知道。谢谢。

0 投票
3 回答
3110 浏览

ruby - 带有 method_missing 的 Ruby 块

请注意,这是对我的问题的跟进

我正在尝试解析以下 Tcl 代码:

在 Tcl 中,foo是方法名,bar是参数,其余的是要处理的“块” eval

现在这是我目前对此的实现:

输出以下内容:

在此示例中,当块被传递给foo方法时,它不存在。然而method_missing它确实存在(至少它似乎存在)。这里发生了什么?

请注意,我知道 ruby​​ 括号的优先级并意识到这是有效的:

但是,我想省略括号。那么这在 ruby​​ 中是否可行(没有词法分析)?

0 投票
1 回答
2805 浏览

c# - 先知物理学……你好世界……?

我不知道为什么,但我似乎无法找出为什么这不起作用......我正在尝试做一些非常简单的事情,比如刚刚从屏幕上掉下来的东西。

似乎最新的下载和网站上的第一个示例代码,我还是错了。

我有这个:

但我得到2个错误:

没有CreateBody()方法(AddBreakableBody()虽然有)

CircleShape 构造函数接受 2 个参数(这很简单,但在示例中仍然出错)

我已经尝试了很多东西,我很困惑为什么我能得到这个。此代码对其他人有用吗?我的dll错了吗?

0 投票
3 回答
294 浏览

ruby-on-rails - rails 中的 method_missing 和 association_proxy

所以,这是我的问题。我目前正在为 Rails 站点构建一个简单的身份验证系统。为此,我有 3 个类:Person、Session 和 Role。在我的 Person 模型中,我已经定义method_missing为根据本指南动态捕获角色。

在我的 application_controller 中,我有一些逻辑来处理登录和注销,其结果通过以下方式为我提供了当前登录的用户: 当前会话@user = @application_session.person 在哪里@application_session

现在在我的一个控制器中,我不希望任何人能够做任何事情,除非他们是管理员,所以我包括: before_filter @user.is_an_admin?

NoMethodError即使我method_missing在我的模型中定义了,这也会引发 a 。我尝试定义is_an_admin?,让它总是作为测试返回 true ,这很有效。

根据this question,我认为问题可能与代理关联有关。当我运行时: puts @user.proxy_owner 我得到一个会话对象,因为每个用户(Person)可以有很多会话,并且我从当前会话中获取了我的用户(Person)。

我很困惑为什么@user.is_an_admin?不在我的 Person 控制器中调用 method_missing 方法。如果您需要更多信息或代码片段,请告诉我。

我在 Ruby 1.9 上使用 Rails 3

0 投票
3 回答
2705 浏览

ruby-on-rails - Rails:使用关联时未在模型上调用 method_missing

我当前的代码:

发生这种情况是因为 rails 中的代码仅将存在的方法传递给模型。

这就是我要的:

我怎样才能做到这一点?

0 投票
2 回答
5490 浏览

ruby - 如何在 ruby​​ 中编写包含 method_missing 的模块

我有几个扩展方法缺失的模块:

这一切都很好,例如ObjectA.new.hello_there输出"Hello, hello_there"。同样,ObjectB.new.goodbye_xxx输出"Goodbye, xxx". respond_to?也可以,例如ObjectA.new.respond_to? :hello_there返回 true。

SaysHello但是,当您想同时使用and时,这并不能很好地工作SaysGoodbye

虽然ObjectC.new.goodbye_aaa工作正常,但ObjectC.new.hello_a行为奇怪:

它正确输出,然后引发错误。也不respond_to?正确,ObjectC.new.respond_to? :hello_a返回false。

最后,添加这个类:

行为也很奇怪。ObjectD.new.lol_zzz有效,但是 ObjectD.new.hello_aand ObjectD.new.goodbye_t在输出正确的字符串后都会抛出一个名称异常。respond_to?hello 和 goodbye 方法也失败了。

有没有办法让这一切正常工作?解释如何method_missing、模块和super交互也是非常有用的。

编辑:coreyward 解决了这个问题,如果我super.<method-name>(args...)在我定义的所有方法中使用 super 而不是,程序可以正常工作。我不明白为什么会这样,所以我在Super.<method-name> 在 ruby​​ 中做了什么?