2014-01-23 38 views
0

belongs_to的我havle belongs_to的關聯模型 'Timetableap' 與模式 'Aircompany'軌與select_tag

 class Timetableap < ActiveRecord::Base 
     belongs_to :aircompany 
     ... 
    end 


    class Aircompany < ActiveRecord::Base 
    has_many :timetableaps 
    ... 
    end 

在 'Timetableaps' 控制器:

class TimetableapsController < ApplicationController 
    ... 
    def index 
    @t = Timetableap.search(params[:search_ap],params[:search_al]) 
    ... 
    end 

我的結構表 「aircompanies」 表

create_table "aircompanies", :force => true do |t| 
    t.string "iata_code",  :null => false 
    t.string "icao_code",  :null => false 
    t.string "awb_prefix" 
    t.string "airline_name",  :null => false 
    t.integer "airport_id",  :null => false 
    t.string "country" 
    t.string "ap_hubs" 
    t.date  "start" 
    t.date  "end" 
    t.datetime "created_at",  :null => false 
    t.datetime "updated_at",  :null => false 
    end 

「timetableaps」 表

create_table "timetableaps", :force => true do |t| 
    t.integer "Flight_Number" 
    t.integer "aircompany_id" 
    t.integer "way_start" 
    t.integer "way_end" 
    t.string "TermStart" 
    t.string "GateStart" 
    t.string "TermEnd" 
    t.string "GateEnd" 
    t.string "TypeOfPlane" 
    t.time  "TimeStart" 
    t.time  "TimeEnd" 
    t.date  "DateOfStartNav" 
    t.date  "DateOfEndNav" 
    t.integer "s1" 
    t.integer "s2" 
    t.integer "s3" 
    t.integer "s4" 
    t.integer "s5" 
    t.integer "s6" 
    t.integer "s0" 
    t.integer "e1" 
    t.integer "e2" 
    t.integer "e3" 
    t.integer "e4" 
    t.integer "e5" 
    t.integer "e6" 
    t.integer "e0" 
    t.datetime "created_at",  :null => false 
    t.datetime "updated_at",  :null => false 
    end 

如何顯示在「aircompany.airline_name的意見下拉列表?

<%= select_tag "search_al", options_from_collection_for_select(@t.group("aircompany_id"),"aircompany_id", **"aircompany"**), prompt: "All Airlines" %> 

回答

1

目前還不清楚您是否想要所有航空公司的航班下降,或者他們是否應該以某種方式進行過濾。

如果你想所有的航空公司,其工作原理:

<%= select_tag "search_al", options_from_collection_for_select(Aircompany.all, :id, :airline_name), prompt: "All Airlines" %> 

由於@t似乎是Timetableap記錄的集合,你可以選擇timetableaps的當前集合中只發現了顯示航空公司:

<%= select_tag "search_al", options_from_collection_for_select(@t.map(&:aircompany).uniq, :id, :airline_name), prompt: "All Airlines" %> 
+0

如何排序(@ t.map(&:aircompany).uniq)散列? – user3081809

+0

它不是一個散列,它是一個數組。如果您想按「Aircompany#airline_name」排序,則可以使用:'@ t.map(&:aircompany).uniq.sort_by(&:airline_name)' –

+0

好吧!謝謝! – user3081809