我的用户模型中有以下常量
应用程序/模型/ 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 %>
而且我不知道如何为国家做这件事。 我知道必须有更好的方法来做到这一点。
有人可以分享如何显示具有上述数据结构的用户的性别和国家?
答案 0 :(得分:2)
假设您已经决定将数据保存在常量中,这里有一些提示:
COUNTRIES = {1 => "Afghanistan"}
,您可以根据需要轻松将其转换为数组,并且您可以轻松地以两种方式查找值:<% if user.country %> <%= User::COUNTRIES[user.country] %> <% end %>
def coutries_for_select # assuming countries is a hash id => name User::COUNTRIES.map {|id, name| [name, id]} end
答案 1 :(得分:1)
可能不完美,但会完成工作
<%= User::COUNTRY_TYPES.map(&:reverse).to_h[user.country] %>
最好将国家/地区保存在另一个表中,并将其引用。