私はRoRに比較的慣れていません。これはうまく機能します:
<td><%= collection_select :competitions_members, :member_id, Member.all, :id, :first_name %></td>
これは値を選択しません (実際には、翻訳を含むテーブルへのそのようなすべての呼び出し):
<td><%= collection_select :competitions_members, :tull_id, Tull.all, :id, :name %></td>
Competitions_members テーブルにシードされたデータ
会員は多くの大会に参加することができます。基本的に、competitions_members テーブルを介して、メンバーと競技会の間に N:M の関係があります。タルは辞書です。コンペティションにメンバーを割り当てるプロセス中に設定される値。
データ モデル クラス:
class Member < ApplicationRecord
has_and_belongs_to_many :competitions
end
class Competition < ApplicationRecord
has_and_belongs_to_many :members
end
class CompetitionsMember < ApplicationRecord
end
タル表には、別の表に翻訳もあります。
class Tull < ApplicationRecord
translates :name
has_many :competitions_members
# separate different localizations of the record
def cache_key
super + '-' + Globalize.locale.to_s
end
end
関連する schema.db の抜粋
create_table "members", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "competitions", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "competitions_members", force: :cascade do |t|
t.integer "member_id"
t.integer "competition_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "tull_id"
t.index ["tull_id"], name: "index_competitions_members_on_tull_id"
end
create_table "tull_translations", force: :cascade do |t|
t.integer "tull_id", null: false
t.string "locale", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name"
t.index ["locale"], name: "index_tull_translations_on_locale"
t.index ["tull_id"], name: "index_tull_translations_on_tull_id"
end
create_table "tulls", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
どんな助けも高く評価しました。これが何らかの形で翻訳されたテーブルに関連している可能性があることに気付きました。