我有一些代码应该检查是否存在属性的方法调用,似乎if或者其他任何东西都没有返回...
%h2= @post.title
.row
.col-sm-12
= render "blog_meta", :post => @post
#text_body
= @post.content
%hr
- if @post.comments.count > 0
%h2 Comments
#comments
- @post.comments.where(:original_id => nil).each do |comment|
.comment
.profile
%img{:src => "/assets/profile_image_sample.jpg"}
.message
.username
- if comment.user.respond_to?('username')
.username= comment.user.username
- else
.username= comment.user.first_name
= comment.content
- logger.info "LOGGER--->>" + comment.user.first_name
.reply-link
%a{:href => "#"} Reply to Comment
- if comment.replies.count > 0
- nesting = 0
- comment.replies.each do |comment|
= render "comment", :comment => comment, :nesting => nesting
%hr
= render "submit_comment"
但是,如果我只是= comment.user.first_name
没有条件,那么它可以正常工作..
答案 0 :(得分:2)
user
很可能会回复username
,但它是blank
或nil
。你可能想要这样做
- if comment.user.username.blank?
.username= comment.user.first_name
- else
.username= comment.user.username
respond_to
用于检查是否为对象定义了方法。如果为对象定义了方法,它将返回true
。它与该方法的输出无关。