2017-05-29 22 views
0

私は3つのテーブルActivity、Activity_type、およびItinerariesを持っています。アクティビティタイプでは、新しいエントリ名=> Testing => Exampleを挿入します。私の活動では、以前に作成したアクティビティタイプをドロップダウンで使用して場所を入力できます。名前列のないIDの代わりに名前を表示するには

新しい旅程の作成には、ドロップダウン活動とユーザー(新しい旅程を作成し、特定の旅程の活動を選択した人)がありますが、活動#1とユーザー#1のみが表示されます。私のリストでは、これはなぜ、それがアクティビティ#1をテストの代わりに表示するだけの理由だと思います。

質問:?

1)私は特定の名前に活動#1を変更することができますどのように新しい旅程を作成する際に(例:ドロップダウンではない活動#1)

2テストする必要があります)名前列なしでIDの代わりに名前を表示するにはどうすればよいですか?

アクティビティテーブル

activity_type_id 
location_id 

旅程表

title 
created_by 

活動タイプテーブル

name 
description 

注:I ALS O以下、これを試みたが、何も

Railsの管理者に起こらなかっ

config.model Itinerary do 
list do 

    field :title 
    # field :schedule 
    field :no_of_days 
    field :activity 
    field :user  
    # field :location  
    # field :activity_type 
    # field :location_name 
end 
create do 
    field :title  
end 
object_label_method do 
    :activity_label_method 
    end 
    def activity_label_method 
    "#{self.activity_type_id}" 

    end 

エンド

旅程モデル

class Itinerary < ApplicationRecord 
    belongs_to :user, foreign_key: :created_by 
    belongs_to :activity 
    has_many :activity_itineraries, foreign_key: :created_by 

    validates :user, presence: true 
    validates :title, presence: true, length: { maximum: 20 } 
    validates :no_of_days, presence: true, 
       :numericality => true 


    def name 
    activity_type.name 
    end 

end 

答えて

1

次のようにモデル内のメソッドtitleまたはnameを定義し、

def name 
    activity_type.name 
end 
rails_admin.rb

、(あなたがあなたのモデル団体に基づいて変更する必要があり、それがこのthreadからのコメントからちょうど概念である)

field :activity_type_id, :enum do 
    enum do 
    Activity.collect {|act| [act.name, act.id]} 
    end 
end 
+0

なぜ民間?上に書いてみてください。 –

+0

更新を確認してください。 –

+0

に '.all'を追加してください。 'Model.all.collect ...'とし、多くのカラムがある場合、このクエリはより最適化されます: 'Model.select([:name、:id])。collect..' –

関連する問題