我将category
的viewable
属性设置为enum
class Category < ActiveRecord::Base
enum viewable: [:only_self, :friends, :anyone]
end
当用户编辑此属性时,我应该如何使它们在_form
中可访问?类似的东西?
<%= form_for(@category) do |f| %>
<%= f.select(:viewable) %>
<% end %>
更新------
<%= f.select(:viewable, options_for_select([["description1", "only_self"], ["description2", "friends"], ["description3", "anyone"]])) %>
- 每一个的描述都很有重复性,因为我需要在任何时候展示它们,而不仅仅是形式。我应该把它们放在哪里
- 在
form_for
中,f.select
不显示该字段的当前值。它总是第一个description1
当使用复数形式时,rails提供了完整的键/值数组,因此您可以为该数组调用Category.viewables
,在options_for_select
的帮助下,您将获得一个功能良好的下拉列表
<%= form_for(@category) do |f| %>
<%= f.select(:viewable, options_for_select(Category.viewables)) %>
<% end %>
更新的答案
每一个的描述都很有重复性,因为我需要无论何时我需要展示它们,而不仅仅是在表格中。我该去哪里把它们放进去?
你可以使用I18n
库,假设你的语言环境是中文(我认为),那么你可以创建/config/locales/zh.yml
并添加类似于这个的东西
categories:
viewable:
only_self: 'some chinese text'
friend: 'more chinese text'
anyone: 'well you know'
然后最好创建一些返回本地化选项的帮助程序
def options_for_viewables
{
t('categories.viewable.only_self') => 0,
t('categories.viewable.friends') => 1,
t('categories.viewable.anyone') => 2
}
end
视图将变成这样的
<%= f.select(:viewable, options_for_viewables) %>