2015-06-13 3 views
1

Мое приложение позволяет пользователям создавать профили и вводить информацию (описание, имя и т. Д.). Я бы хотел, чтобы они могли выбрать свой язык из раскрывающегося списка и сохранить этот выбор в своей записи в таблице User.Позволяет пользователям выбирать параметры из раскрывающегося списка

Я понимаю, что у меня есть отдельная таблица languages, поле language_id в таблице профилей и с помощью options_from_collection_for_select, чтобы создать фактическое раскрывающееся меню.

Мой вопрос: что мне нужно сделать с файлами модели/контроллера, чтобы все это работало?

ответ

2

Вам необходимо определить модель с именем Language, эта таблица будет отвечать за хранение всех языков. Я думаю: он имел бы одно поле с именем language типа string.

rails g model Language language:string # though you don't need ':string' part 

В приложение/модели/language.rb:

class Language < ActiveRecord::Base 
    has_many :users 
end 

Теперь вам нужно добавить language_id к таблице пользователей, и вы выполните следующую миграцию:

rails g migration add_language_id_to_users language:references 

И обновить модель User соответственно:

А потом, с вашего form, вам необходимо отправить language_id при передаче других параметров, чтобы создать пользователя, а в контроллере, вам придется разрешить language_id как следующее:

def user_params 
    params.require(:user).permit(:first_name, :last_name, :language_id) 
end 

и в вашем контроллер, вам просто нужно создать пользователя, как обычно, и Rails сделает для вас магию.

В контроллере обычный код:

@user = User.new(user_params) 
+0

Вы можете. Если вы считаете, что ответ действительно, и вам помогли, вы можете принять его. –

Смежные вопросы