2012-05-31 17 views
0

我剛從頭開始創建自己的rails項目。如果minutes變量設置爲特定值,我正在試圖顯示hello。Rails視圖和控制器,(if/else語句)

The code現在在控制器中,我希望它在視圖中顯示輸出。這可能嗎?或者我把它寫在視圖中?不確定是否正確。

home_controller.rb

class HomeController < ApplicationController 
    def index 
    @minutes = 23 
    @minutes = params[:minutes] 
    end 
end 

index.html.erb

<% if @minutes == 23 %> 
    <%= "helllo" %> 
<% else %> 
    Anonymous 
<% end %> 
+3

我想,沒有人知道你在問什麼。 – ABrukish

+0

嗨,歡迎來到StackOverflow,我已經編輯你的問題與要點代碼並添加了你的疑問(從要點出發)關於如何以正確的方式來做到這可能是你的問題。 –

+0

需要多一個投票來批准編輯(新的SO功能?) – DGM

回答

3
@minutes = params[:minutes] || 23 
2

它在這個簡單的情況下,把一些邏輯視圖到足夠多的好,但通常是更好添加幫手方法(閱讀Getting Started指南是一個好主意)。

也許你已經看到了app/helpers目錄,在這些幫助文件中,你可以定義在視圖層中可用的方法,與視圖層相關的方法,但是做一些奇怪或骯髒的東西來放入模板文件。

例如,在你的情況,你可以有一個/app/helpers/time_helper.rb

module TimeHelper 
    # I know the method name sucks a little 
    def show_hello_if_minutes_is_23(minutes = @minutes) 
    if minutes==23 
     "Hello" 
    else 
     "Anonymous" 
    end 
    end 
end 

,然後在你的index.html.erb模板中使用:

<%= show_hello_if_minutes_is_23 %> 

正如你可以看到:

  1. 你可以讀取方法名稱並理解它的作用(高級別)
  2. 邏輯放在一個紅寶石方法
  3. 的方法採取minutes說法,但它是可選的

請記住:通常重複是邪惡的(乾的事情),但鑑於土地有時候一個時間太長很多(但不是在這個簡單的情況下)。

UPDATE:我剛剛看到你把@minutes變量設置爲23,然後你覆蓋它使以前的任務無用。我不知道你在控制器中想要做什麼,但是如果你的問題是關於爲分鐘變量設置默認值,請使用Yuri's answer並使用||=運算符:@minutes ||= params[:minutes]

+0

嘿,是的,我認爲我只是變得有點困惑等,你的幫手方法似乎是我在尋找什麼。我如何在視圖中顯示這個?它會像<%show_hello_if_minutes_is_23%>或<%TimeHelper%> – Namenone

+0

對不起,我修復了答案標記,現在您可以看到如何在視圖中使用助手:<%= show_hello_if_minutes_is_23%>,請注意等號,這意味着輸出必須放在模板中。 –