我的应用程序允许用户创建配置文件并输入信息(描述,名称等)。我希望他们能够从下拉列表中选择他们的语言,并将该选项保存到他们在User表中的记录中。
我知道我必须在Profile表上有一个单独的languages
表,language_id
字段,并使用options_from_collection_for_select
创建实际的下拉列表。
我的问题是我需要对模型/控制器文件做些什么来使这一切都有效?
答案 0 :(得分:2)
您需要定义名为Language
的模型,此表将负责存储所有语言。我的想法:它将有一个名为language
的字段为字符串的字段。
rails g model Language language:string # though you don't need ':string' part
在app / models / language.rb中:
class Language < ActiveRecord::Base
has_many :users
end
现在,您需要将language_id
添加到users表中,然后运行以下迁移:
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)