Ruby on rails 集合\u选择一对多/多对多

Ruby on rails 集合\u选择一对多/多对多,ruby-on-rails,Ruby On Rails,如何在一对多的卡通场景中使用collection\u select。这是我的 该应用程序管理项目。每个项目都支持不同的语言集。人们现在可以在项目中发布消息 使用项目支持的语言之一 简化的班级结构: class Project < ApplicationRecord has_many :languageprojects has_many :languages, through: :languageprojects end class Language < Applicatio

如何在一对多的卡通场景中使用
collection\u select
。这是我的

该应用程序管理项目。每个项目都支持不同的语言集。人们现在可以在项目中发布消息 使用项目支持的语言之一

简化的班级结构:

class Project < ApplicationRecord
  has_many :languageprojects
  has_many :languages, through: :languageprojects
end

class Language < ApplicationRecord
  has_many :languageprojects
  has_many :projects, through: :languageprojects
  def to_s
    language
  end
end

class Languageproject < ApplicationRecord
  belongs_to :language
  belongs_to :project
end

class Projectmessage < ApplicationRecord
  belongs_to :language
  belongs_to :project
end
然后我将这些语言的翻译保存在locales文件夹的en.yml、fr.yml、ru.yml下。例如:

en:
  language_en: English
  language_fr: French
  language_ru: Russian
我到目前为止:

<%= form.collection_select :language_id, Languageproject.all, :id, :language, { include_blank: false }, { class: 'form-control' } %>

这显示了表格条目的值(即en、fr、ru)。如何整合语言翻译?我想让下拉列表显示英语、法语、俄语


显然,我总是可以编写代码,而不是使用“collection\u select”,但我希望有一种“Ruby”方法来解决这个问题。

尝试使用
options\u来选择

<%= f.select :language_id, options_for_select(@language_project.languages.all.map{|l| [l.language, l.id]}, @language.id), include_blank: false, class: 'form-control' %>


谢谢你给我指引了正确的方向,就快到了,只需要添加I18n翻译,就可以了:
还不能提升,需要更多的声誉才能做到。我刚刚提升了你的问题,希望你很快就能访问这些特权!我的错误,几乎正确,这是我使用的最终版本:
<%= f.select :language_id, options_for_select(@language_project.languages.all.map{|l| [l.language, l.id]}, @language.id), include_blank: false, class: 'form-control' %>