为什么这会返回“未定义的方法”?错误
我正在开始使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果要检查方法是否存在,可以使用 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
不要将解析结果传递到解析器上下文之外。 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.