2013-06-18 51 views
1

我有以下代码:Ruby on Rails的IF ... ELSE

<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 %> 

换句话说,如果汤姆墨菲=比尔史密斯......它不......它不应该去'后'的行?这就是我想要发生的事情。

+6

它是一个愚蠢的错误,使用'的=''而不是== '。您正在分配而不是比较 – Muntasim

回答

5

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

你把=更换<% if current_user.name = review.user.front_name %>,你必须把==

+1

感谢您的全力帮助。他们都是对的,但只是接受这个,因为它是在第一个。是不是还有'==='?这是做什么的? – CHarris

+5

关于'===' 三等于的一般定义是,如果两部分相同或者右部分包含在左边的范围内,它将返回true。 '1 === 1#true' '(1..3)=== 2#true' 还有一些其他影响 – Muntasim

+0

好的,谢谢。很高兴知道。 – CHarris

2

在Ruby检查平等,你应该使用双等号(==)。

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

<% if current_user == review.user %> 
2

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

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

==(双相等)同等价值的测试..

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 %> 

变化intoenter代码在这里

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