フォームにロケール選択ドロップダウンを表示するにはどうすればよいですか?
「en」、「fr」などのi18nロケール文字列を格納する列「lng」を持つユーザーモデルがあります。
私の目標は、「英語」、「フランス語」のすべての言語がリストされたドロップダウンを作成し、フォームの更新時に正しい「en」、「fr」の値をユーザーテーブルに保存することです。
これを続ける方法は何でしょうか?
フォームにロケール選択ドロップダウンを表示するにはどうすればよいですか?
「en」、「fr」などのi18nロケール文字列を格納する列「lng」を持つユーザーモデルがあります。
私の目標は、「英語」、「フランス語」のすべての言語がリストされたドロップダウンを作成し、フォームの更新時に正しい「en」、「fr」の値をユーザーテーブルに保存することです。
これを続ける方法は何でしょうか?
select タグhttp://guides.rubyonrails.org/form_helpers.html#the-select-and-option-tagsを使用するだけです。
= form_for @user do |f|
= f.select :lng, options_for_select([['English', 'en'], ['French', 'fr']], @user.lng)
また、配列を定数のどこかに移動することをお勧めします。たとえば、モデル User の独自のメソッドで。例えば:
#models/user.rb
def self.lng_list
[['English', 'en'], ['French', 'fr']]
end
#form
= form_for @user do |f|
= f.select :lng, options_for_select(User.lng_list, @user.lng)
編集済み
単純な形式では、このhttps://github.com/plataformatec/simple_form#wrapping-rails-form-helpersのようなレール フォーム ヘルパーを使用できます。
= f.input :lng do
= f.select :lng, options_for_select(User.lng_list, @user.lng)
または、collection
オプションhttps://github.com/plataformatec/simple_form#collectionsを使用できます。
= f.input :lng, :collection => User.lng_list