2015-08-15 53 views
2

我遇到了一個非常奇怪的問題。我正在嘗試使用if和else在rails中它的工作原理,當我將current_user.id與數字進行比較時,但是當我嘗試使用params來完成時,它不起作用。這裏是我的代碼工作:Ruby on Rails參數比較不工作如果其他

<%= @u = 2 %> 

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

,當我嘗試使用此代碼:

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

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

它總是給我AAAAAAAAA值這將是有益的,如果有人能幫助我解決這個問題

回答

1

這裏您試圖比較字符串和數字。以上答案已足夠,但我想更正您的代碼,只需將其添加到您的代碼中,即可完成:

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

使用current_user.id == @u.to_i而不是@u,因爲params會得到一個字符串,並且您會與一個整數進行比較。

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

+1

應該是'to_i'? –

+0

@WandMaker不,它應該是'to_s',因爲current_user.id是類型整數,它與'params [:id]'(通過'@ u')進行比較,它是字符串類型。如果你使用'to_i',你不會投射任何東西,因爲'current_user.id'已經是整數。 – MarsAtomic

+1

@MarsAtomic我的評論指向潛在的錯字在回答'@ u.t_i' –

0

正確答案比較已經給出。我通常在這種情況下,喜歡用「.inspect」輸出我感興趣的變量。這通常會給出關於錯誤發生的明確信息。

在你的具體情況下,這將有輸出3爲id和"3"爲參數 - 很容易看到這種方式。