Rails:枚举属性的表单助手

时间:2015-02-21 06:56:02

标签: ruby-on-rails

我将category的{​​{1}}属性设为viewable

enum

当用户编辑此属性时,我应该如何在class Category < ActiveRecord::Base enum viewable: [:only_self, :friends, :anyone] end 中访问它们?有点像?

_form

UPDATE ------

<%= form_for(@category) do |f| %>
  <%= f.select(:viewable) %>
<% end %>
  1. 每个的描述都是非常重复的,因为我需要在需要显示时将它们放入,而不仅仅是在表单中。我应该把它们放在哪里?
  2. <%= f.select(:viewable, options_for_select([["description1", "only_self"], ["description2", "friends"], ["description3", "anyone"]])) %> 中,form_for不会显示此字段的当前值。它始终是第一个f.select

1 个答案:

答案 0 :(得分:2)

使用复数形式时,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) %>