0

我有一些代码应该检查属性是否存在方法调用,似乎 if 或 else 都没有返回任何东西......

%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没有条件,那么它工作正常..

4

1 回答 1

2

最有可能user响应,username但它是blankor nil。您可能想要这样做

    - if comment.user.username.blank?
        .username= comment.user.first_name
    - else
        .username= comment.user.username

respond_to用于检查是否为对象定义了方法。true如果为对象定义了方法,它将返回。它不关心该方法的输出是什么。

于 2013-09-22T00:40:30.853 回答