0

私は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

どんな助けも高く評価しました。これが何らかの形で翻訳されたテーブルに関連している可能性があることに気付きました。

4

1 に答える 1

0
class Tull < ApplicationRecord    
  has_many :translations
  translates :name, :fallbacks_for_empty_translations => true
  attr_accessible :translations_attributes
end

Rails コンソールで以下のコードを実行してみてください。

Tull.first.translations- これにより翻訳記録が得られた場合、関連付けが正しいことを意味します。

ここで、ビュー側で、多言語のものの属性をどのように生成するかを確認してください。を使用することをお勧めしますglobalize_accessors

コードベースを送ってください。

于 2016-10-04T09:24:41.267 に答える