-1

似乎@original_id并且comment.id必须转换为字符串才能比较相等,当我不将它们转换为字符串时,else会返回分支中的字符串。为什么是这样?有没有办法绕过它?

- if @original_id.to_s == comment.id.to_s
    = "Matched"
- else
    = "hi"

语境:

.comment{:class => "c" + nesting.to_s}
    .profile
        %img{:src => "/assets/profile_image_sample.jpg"}
    .message
        .username
            - if comment.user.username.blank?
                = comment.user.first_name
            - else
                = comment.user.username 
        = comment.content
        .reply-link
            = link_to "Reply to comment...", post_path(:original_id => comment.id)
            = @original_id.to_s + "and" + comment.id.to_s
- if @original_id.to_s == comment.id.to_s
    = "Matched"
- else
    = "hi"
- if comment.replies.count > 0
    - nesting = nesting + 1
    - comment.replies.each do |comment|
        = render "comment", :comment => comment, :nesting => nesting
4

1 回答 1

2

这两个变量之一是字符串,而另一个是数字。

一个可能的原因是在控制器中,所有接收(发布)的参数都是字符串。如果没有显式转换,您会将此值作为字符串传递给视图。

并回答您的第二个问题:

在控制器中设置时将 @original_id 转换为整数:

@original_id = params[:original_id].to_i
于 2013-09-24T10:04:37.160 回答