允许用户从下拉列表中选择选项

时间:2015-06-13 23:37:58

标签: ruby-on-rails ruby

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

我知道我必须在Profile表上有一个单独的languages表,language_id字段,并使用options_from_collection_for_select创建实际的下拉列表。

我的问题是我需要对模型/控制器文件做些什么来使这一切都有效?

1 个答案:

答案 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)