1

私はTreetopを使い始めており(これはTreetopエラーではないと思いますが)、単純な日付フィールドを解析しようとしています。

日付に月が含まれているかどうかを調べ、含まれている場合はそれを返します。だから私は私のビューに私の解析されたツリーを渡し、言います

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

      <%= @ input_date.month.text_value%>

<%終了%>

@input_dateに月が存在しないため、出力がないと予想していましたが、代わりにエラーが発生します

#<Treetop :: SyntaxNode:0x41a0240>の未定義のメソッド'month'

.existsも使用しようとしましたが、同じ結果が得られます。

どうしてこれなの??月の存在を確認する別の方法はありますか?

4

2 に答える 2

1

メソッドの存在を確認したい場合は、object.respond_to?(:method_name) を使用できます。あなたの例には「月」メソッドが存在しないようです。

オブジェクトが nil かどうかをテストしてからメソッドを呼び出したい場合は、「try」メソッドを使用することもできます。

<%= object.try(:method, :param) %> の代わりに <% if !object.nil? %>.....

私はここからそれを手に入れました

于 2011-08-01T19:09:35.860 に答える
0

解析結果をパーサー コンテキストの外に渡さないでください。SyntaxNode は、パーサー内でのみ使用されます。解析が成功したら、ツリーで定義した関数を呼び出してドメイン オブジェクトを返します。解析ツリーを使用しないでください。それは目的ではありません。

于 2015-05-06T02:22:10.490 に答える