1

Tester-ManagementのActiveRecordでpluginaweekのstate_machineを使用します。この呼び出しで、考えられるすべての状態の配列を取得します。

irb(main):013:0> Tester.state_machine.states.map &:name
=> [:candidate, :contract_sent, :contract_received, :contract_wont_return, :active, :retired]

ここで、特定の状態のテスターを取得するためにmeta_searchを使用して検索フォームを作成する必要はありません。selectを使用したい:

- states = {}; Tester.state_machine.states.map(&:name).each{ |e| states[t(e.to_s)] = e }
= form.input :state_equals, :as => :select, :collection => states

それは機能しますが、新しいハッシュを作成して各要素を変換するため、うまくいきません。また、私のソリューションではstate_machineにI18n yaml-structureを使用していないため、翻訳を2回挿入する必要があります...

のような方法はありますか

Tester.state_machine.states.map(&:human_state_name)

また

Tester.state_machine.human_states_name.map(&:name)

翻訳された状態を取得するには?

4

1 に答える 1

1

私は解決策を見つけました。次のようにして、state_mache の状態の変換を取得します。

- states = {}; Tester.state_machine.states.map() { |s| states[s.human_name] = s.name }
= form.input :state_equals, :as => :select, :collection => states
于 2012-05-21T12:08:38.670 に答える