【问题标题】:Ruby on Rails Params comparing not working in If elseRuby on Rails 参数比较在 If else 中不工作
【发布时间】:2015-11-08 17:32:24
【问题描述】:

我遇到了一个非常奇怪的问题。我正在尝试在 rails 中使用 if 和 else,当我将 current_user.id 与数字进行比较时,它运行良好,但是当我尝试使用 params 时,它不起作用。这是我的工作代码:

<%= @u = 2 %>

   <% if current_user.id == @u %>
   ssssss
   <% else %> 
  aaaaaaaaa
   <% end  %>

当我尝试使用此代码时:

 <%= @u = params[:id] %>

   <% if current_user.id == @u %>
   ssssss
   <% else %> 
  aaaaaaaaa
   <% end  %>

它总是给我 aaaaaaaaa 价值,如果有人可以帮助我解决这个问题会很有帮助

【问题讨论】:

    标签: ruby-on-rails conditional


    【解决方案1】:

    使用current_user.id == @u.to_i 而不是@u,因为params 得到一个字符串并且你与一个整数进行比较。

    或者您可以使用current_user.id.to_s == @u进行比较

    【讨论】:

    • @WandMaker 不,它应该是to_s,因为 current_user.id 是整数类型,它正在与params[:id](通过@u)进行比较,后者是字符串类型。如果您使用to_i,您不会强制转换任何内容,因为current_user.id 已经是整数。
    • @MarsAtomic 我的评论指向答案@u.t_i中的潜在错字
    • @WandMaker 是对的,您提供了两个选项,但在第一个选项中您有错字,应该是 .to_i
    【解决方案2】:

    已给出正确答案。在这种情况下,我通常喜欢用“.inspect”输出我感兴趣的变量。这通常可以清楚地说明问题所在。

    在您的特定情况下,这将输出 3 用于 id 和 "3" 用于参数 - 很容易看到这种方式。

    【讨论】:

      【解决方案3】:

      在这里,您尝试将 string 与 number 进行比较。以上答案就足够了,但我想更正您的代码,只需将其添加到您的代码中即可:

        <%= @u = 2 %>
          <% if current_user.id == @u.to_i %>
                 ssssss
                 <% else %> 
                aaaaaaaaa
                 <% end  %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-12
        • 1970-01-01
        • 2014-01-05
        相关资源
        最近更新 更多