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 }) %>