Ruby Rails 参数比较在 If else 中不起作用

Ruby on Rails Params comparing not working in If else

我 运行 遇到了一个非常难运行的问题。我正在尝试在 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 的价值,如果有人能帮我解决这个问题,那将会很有帮助

使用 current_user.id == @u.to_i 而不是 @u,因为 params 获取一个字符串,而您与一个整数进行比较。

或者您可以使用current_user.id.to_s == @u

进行比较

已给出正确答案。在这种情况下,我通常喜欢用“.inspect”输出我感兴趣的变量。这通常会给出有关问题所在的明确信息。

在您的特定情况下,id 的输出为 3,参数的输出为 "3" - 这样很容易看出。

您在此处尝试将字符串与数字进行比较。以上答案已经足够,但我想更正您的代码,只需将其添加到您的代码中即可:

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