为什么这会返回“未定义的方法”?错误

发布于 2024-11-27 06:39:02 字数 439 浏览 1 评论 0原文

我正在开始使用 Treetop (尽管我不认为这是树顶错误),并且我正在尝试解析一个简单的日期字段。

我想弄清楚该日期是否包括一个月,如果是,则返回该日期。因此,我将解析后的树传递给我的视图,并

< % if !@input_date.month.nil? % >

      < %= @input_date.month.text_value % >

<% end %>

在我的@input_date中说,该月份不存在,所以我期望没有输出,但我收到了一个错误,

undefined method 'month' for #<Treetop::SyntaxNode:0x41a0240>

我也尝试使用 .exists,但是我得到同样的结果。

这是为什么??还有其他方法可以检查该月份是否存在吗?

I'm getting started with Treetop (though I don't think this is a treetop error) and I'm trying to parse a simple date field.

I am trying to figure out if the date includes a month, and if so return that. So i pass my parsed tree to my view and say


< % if !@input_date.month.nil? % >

      < %= @input_date.month.text_value % >

<% end %>

in my @input_date, the month does not exist, so I was expecting to have no output, but instead I'm getting an error

undefined method 'month' for #<Treetop::SyntaxNode:0x41a0240>

I've also tried to use .exists, but I get the same result.

Why is this?? Is there another way to check for the existence of the month??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一念一轮回 2024-12-04 06:39:02

如果要检查方法是否存在,可以使用 object.respond_to?(:method_name)。您的示例中似乎不存在“月份”方法。

如果您想要测试对象是否为零,然后调用方法,您也可以使用“try”方法。

<%= object.try(:method, :param) %>而不是 <% if !object.nil? %>.....

我从这里得到它

If you want to check the existence of a method you can use object.respond_to?(:method_name). It looks like 'month' method doesn't exist in your example.

You can also use 'try' method if what you want is to test if the object is nil, then call a method.

<%= object.try(:method, :param) %> instead of <% if !object.nil? %>.....

I got it from here

生寂 2024-12-04 06:39:02

不要将解析结果传递到解析器上下文之外。 SyntaxNode 仅用于解析器内部。当您成功解析时,调用您在树上定义的函数来返回域对象 - 不要只使用解析树,这不是它的用途。

Don't pass parse results outside the parser context. A SyntaxNode is only for use inside the parser. When you have a successful parse, call a function you've defined on your tree to return a domain object - don't just use the parse tree, that's not what it's for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文