2015-06-13 92 views
1

我的应用程序允许用户创建配置文件并输入信息(描述,名称等)。我希望他们能够从下拉列表中选择他们的语言,并将其选择保存到用户表中的记录中。允许用户从下拉列表中选择选项

据我所知,我必须在配置文件表中有一个单独的languages表,language_id字段,并使用options_from_collection_for_select来创建实际的下拉菜单。

我的问题是我需要做什么对模型/控制器文件,使这一切工作?

回答

2

您需要定义一个名为Language的模型,该表将负责存储所有语言。我认为:它将有一个字段类型为language的字段。

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型号:

class User < ActiveRecord::Base 
    belongs_to :language 
    # other code 
end 

,然后从你的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

欢迎您。如果你认为答案是有效的,并帮助你,你可以接受它。 –

相关问题