を評価されていないループ内の「未定義のメソッド」エラー:レールこのコードは(HAMLを使用して)正しく動作
#comments
- @blog.comments.each do |comment|
.comment
.username
- if !eval("comment.user").nil?
#{comment.user.email}
.content
#{comment.content}
しかし、私は
#comments
- @blog.comments.each do |comment|
.comment
.username
#{comment.user.email}
.content
#{comment.content}
すなわち「evalの」行を削除した場合、私はエラーが表示されます。
undefined method `email' for nil:NilClass
ので、データベースのコメント(何が存在しない場合でも、ループの内容は評価されるべきではない)。何が起こっている?
' - !!eval(" comment.user ")。nil?'これは醜いです。単に ' - comment.user'を使用してください。 –
@MikhailNikalyukin thx、私はより洗練された構文を探していました。私は前にそれを試したと思っていましたが、今ではうまくいきます:) –