1

我有以下代码:

<div class="category_name">
     <%= current_user %>
     <%= review.user.front_name %>
      <% if current_user.name = review.user.front_name %>
      <%= link_to "You", user_path(review.user) %> / <%= review.categories_list %>
      <% else %>
      <%= link_to review.user.front_name, user_path(review.user) %> / <%= review.categories_list %>
      <% end %>
    </div>

它呈现如下内容:

汤姆墨菲比尔史密斯你/电影

为什么会这样?

<% if current_user.name = review.user.front_name %>

换句话说,如果汤姆墨菲=比尔史密斯......它不......不应该在'else'之后进入线路吗?这就是我想要发生的事情。

4

4 回答 4

5

替换<% if current_user.name = review.user.front_name %>

<% if current_user.name == review.user.front_name %>

你放=,你必须放==

于 2013-06-18T10:23:09.737 回答
2

在 Ruby 中要检查相等性,您应该使用双等号 ( ==)。

另外 - 目前您正在比较名称。您应该比较对象(用户)以避免错误或更糟(安全漏洞)。

<% if current_user == review.user %>
于 2013-06-18T10:24:35.123 回答
2

只需修改:<% if current_user.name = review.user.front_name %>

<% if current_user.name == review.user.front_name %>

== 双相等)测试相等值..

于 2013-06-18T10:29:10.417 回答
1

当你想做出条件陈述时。你应该比较你的陈述。例如:

if number == 10
   print "Variable is 10"
elsif number == "20"
   print "Variable is 20"
else
   print "Variable is something else"
end

在您的情况下,请更改行:

<% if current_user.name = review.user.front_name %>

在此处更改为输入代码

<% if current_user.name == review.user.front_name %>
于 2013-06-18T10:41:48.053 回答