我有常數像Rails4 - 如何訪問視圖中的常量並正確顯示它們?
應用程序/模型/ user.rb按照我的用戶模型
GENDER_TYPES = [['Male', false], ['Female', true]]
COUNTRY_TYPES = [["Afghanistan",1],["Aland Islands",2],["Albania",3]..]
在視圖,如用戶註冊頁面我訪問它們如下
<div>
<%= f.label :is_female, "Gender" %>
<%= f.select :is_female, User::GENDER_TYPES , {}, { :class => 'form-control' } %>
</div>
<div>
<%= f.label :country, "From" %>
<%= f.select :country, User::COUNTRY_TYPES , {}, { :class => 'form-control' } %>
</div>
這是我的部分用戶型號爲
class AddAdminToUsers < ActiveRecord::Migration
def change
add_column :users, :is_female, :boolean, default: false
add_column :users, :country, :integer
end
end
當用戶註冊時,我是能夠將數據存儲在表格中。 但是,當我顯示視圖的用戶,我使用這樣的性別
<% if user.is_female %>
<small>Female</small>
<% else %>
<small>Male</small>
<% end %>
而且我不知道如何做到這一點的國家。 我知道必須有更好的方式來做到這一點。
有人可以分享如何顯示具有上述數據結構的用戶性別和國家嗎?
感謝:呈現,而不是參考模型常數原始數據直接,當你想要做翻譯這是演示的一部分,而不是業務邏輯,也是有用的。我會試試這個。但我採取了這種方法,以便我可以停止數據庫訪問。我有一個觀點,用戶可以看到所有其他用戶。我想如果我將國家保存在數據庫中,那麼每個用戶都可以訪問數據庫。例如,如果一個頁面顯示30個用戶,那麼通過30個數據庫訪問不會有嗎?對不起,我是一個新手。如果我錯了,請糾正我。 – LovingRails 2014-11-14 13:10:42
@LovingRails你是半正確的,你所描述的被稱爲N + 1問題,rails允許你避開它:'User.includes(:countries).all',將生成2個數據庫查詢並將相應的國家每個選定的用戶。更多細節在這裏:https://www.codemy.net/posts/optimizing-your-rails-app-part-1-n-1-queries – keymone 2014-11-14 13:17:07
當你獲取用戶時,你可以急切地加載國家,這將限制查詢數量爲2。 – Santhosh 2014-11-14 13:17:47