Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails 4中使用f.select保存多个记录_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 在Rails 4中使用f.select保存多个记录

Ruby on rails 在Rails 4中使用f.select保存多个记录,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个名为Professor的模型,具有以下内容: class Professor < ActiveRecord::Base enum language: [:spanish, :english, :french] end 如果我选择这三个选项,我会从服务器上得到以下信息 "language"=>["", "spanish", "english", "french"] 但在控制台中,我得到: Professor Load (0.7ms) SELECT "professo

我有一个名为
Professor
的模型,具有以下内容:

class Professor < ActiveRecord::Base
  enum language: [:spanish, :english, :french]
end
如果我选择这三个选项,我会从服务器上得到以下信息

"language"=>["", "spanish", "english", "french"]
但在控制台中,我得到:

Professor Load (0.7ms)  SELECT  "professors".* FROM "professors"   ORDER BY "professors"."id" ASC LIMIT 1
=> #<Professor id: 1, language: nil>
Professor Load(0.7ms)从“Professor”顺序中按“Professor”选择“Professor”。“id”ASC限制1
=> #
这里出了什么问题?有更好的方法吗?

您的
语言列或(首选方法)创建多对多关联:

# professor.rb
class Professor < ActiveRecord::Base
  has_many :professor_languages, dependent: :destroy
  has_many :languages, through: :professor_languages
end

# form:
<%= f.select(:language_ids, options_for_select(Language.all.map {|language| [language.titleize, language.id]}), {}, { multiple: true }) %>
#professor.rb
课堂教授

Professor
中删除
language
列,创建
ProfessorLanguage
language
模型,并进行必要的迁移。

enum
只接受列表中的一项。好的,谢谢。那么如何将多个记录保存到
语言中
?那么在
ProfessorLanguage
模型中我必须放置哪些列?对不起,我是rails新手…
ProfessorLanguage
应该有
professor\u id
language\u id
# professor.rb
class Professor < ActiveRecord::Base
  has_many :professor_languages, dependent: :destroy
  has_many :languages, through: :professor_languages
end

# form:
<%= f.select(:language_ids, options_for_select(Language.all.map {|language| [language.titleize, language.id]}), {}, { multiple: true }) %>