2013-06-18 79 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 %>