改爲已激活TRUE在我companies
數據庫中,我有一個狀態列 - boolean
(true或false)。是否有可能從模型或控制器而不是視圖模板真正到活躍 & 假到不活躍改變。Ruby on Rails的 - 從模型或控制器而不是視圖
這是我在我的視圖模板現在使用:
- if company.status == true
%p Active
- else
%p Inactive
我覺得這些都只是必要條件,我正在尋找一個更清潔的方式。
改爲已激活TRUE在我companies
數據庫中,我有一個狀態列 - boolean
(true或false)。是否有可能從模型或控制器而不是視圖模板真正到活躍 & 假到不活躍改變。Ruby on Rails的 - 從模型或控制器而不是視圖
這是我在我的視圖模板現在使用:
- if company.status == true
%p Active
- else
%p Inactive
我覺得這些都只是必要條件,我正在尋找一個更清潔的方式。
以前答案的附錄:在模型中加入觀點並不是最佳實踐 - 它違反了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
謝謝你告訴我最佳實踐。是否可以通過內的樣式將值(活動,非活動)傳遞給我? – Rubioli
是的,但你必須使用原始的,所以鐵軌不會逃避標籤:'raw(「 Active」):raw(「 charlysisto
在您的公司模型中,定義一個像這樣的函數。
def get_status
return self.status ? "Active" : "Inactive"
end
在您看來,您可以簡單地做到這一點。
<%= company.get_status %>
是的這就是我在說的:) –
謝謝哈利。我得到的功能,但你能解釋它是如何工作的,所以我可以從中學習:) Tnx – Rubioli
它很簡單。 'get_status'是一個可以從任何'Company'實例調用的實例方法。該函數簡單地檢查實例的狀態,如果其爲真,則返回活動,否則不活動。所以,如果你做'company = Company.first',那麼'company'就是一個實例,當你調用get_status方法時,它會簡單地檢查它的'status',如果它是true或者false並且相應地返回。希望它清楚。 –
是否有可能改變真正的主動&假從 模型或控制器而不是視圖模板爲無效。
是有可能
你可以在你的模型級編寫一個instance method
使視圖代碼DRY
論,我們可以寫出更抽象的方式下Harry Answer!
def get_status
status ? "Active" : "Inactive"
end
您可以定義一個函數可以檢查模型,並在您的模型中將狀態設置爲「活動」或「非活動」,並且您可以在每次檢查並顯示時調用該方法。 –