2016-01-12 172 views
0

改爲已激活TRUE在我companies數據庫中,我有一個狀態列 - boolean(true或false)。是否有可能從模型或控制器而不是視圖模板真正活躍 & 不活躍改變。Ruby on Rails的 - 從模型或控制器而不是視圖

這是我在我的視圖模板現在使用:

- if company.status == true 
    %p Active 
- else 
    %p Inactive 

我覺得這些都只是必要條件,我正在尋找一個更清潔的方式。

+0

您可以定義一個函數可以檢查模型,並在您的模型中將狀態設置爲「活動」或「非活動」,並且您可以在每次檢查並顯示時調用該方法。 –

回答

0

以前答案的附錄:在模型中加入觀點並不是最佳實踐 - 它違反了SRP。當然,你不會因爲那個小小的罪而被閃電擊中,但是你應該意識到這一點。

另外的備選方案是保持這個基本邏輯,像這樣的觀點有一個共同的一行代碼:

%p= company.status ? "Active" : "Inactive" 

終於還是把它放在一個幫手:

%p= boolean_to_activity(company.status) 

# ... in helpers/some_helper.rb 

def boolean_to_activity status 
    status ? "Active" : "Inactive" 
end 
+0

謝謝你告訴我最佳實踐。是否可以通過內的樣式將值(活動,非活動)傳遞給我? – Rubioli

+0

是的,但你必須使用原始的,所以鐵軌不會逃避標籤:'raw(「 Active」):raw(「 charlysisto

0

在您的公司模型中,定義一個像這樣的函數。

def get_status 
    return self.status ? "Active" : "Inactive" 
end 

在您看來,您可以簡單地做到這一點。

<%= company.get_status %> 
+0

是的這就是我在說的:) –

+0

謝謝哈利。我得到的功能,但你能解釋它是如何工作的,所以我可以從中學習:) Tnx – Rubioli

+0

它很簡單。 'get_status'是一個可以從任何'Company'實例調用的實例方法。該函數簡單地檢查實例的狀態,如果其爲真,則返回活動,否則不活動。所以,如果你做'company = Company.first',那麼'company'就是一個實例,當你調用get_status方法時,它會簡單地檢查它的'status',如果它是true或者false並且相應地返回。希望它清楚。 –

0

是否有可能改變真正的主動&假從 模型或控制器而不是視圖模板爲無效。

是有可能

你可以在你的模型級編寫一個instance method使視圖代碼DRY

論,我們可以寫出更抽象的方式下Harry Answer

def get_status 
status ? "Active" : "Inactive" 
end 
相關問題