Сводка Я хочу исключить некоторые варианты выбора при использовании collection_select. Например, при добавлении нового company_code (table = Company_Listings) для данной компании (table = Companies), которая для раскрывающегося списка обмена (таблица = обмены) заменяет только те, что его данная компания НЕ указана. Информация о параметрах также может быть введена для компании (опять же на столе = Company_Listings).ruby-on-rails collection_select исключить некоторые выборы
Подробнее.
General У меня есть экран, на котором можно ввести информацию о компании. Я допускаю, чтобы компания была зарегистрирована на нескольких биржах. Я также разрешаю вводить информацию о параметрах. Например, Broken Hill Pty зарегистрирован на Австралийской фондовой бирже (ASX) в качестве BHP, а также на Лондонской фондовой бирже (LSE) в качестве BIL. Кроме того, для каждой биржи можно добавить несколько вариантов.
Эта информация хранится в таблицах компаний и компаний (таблица ниже).
Пример - то, что я пытаюсь сделать
1- Список бирж = ASX, LSE, AMEX, NYSE
2- компаний таблица Компания = Брокен Хилл Pty Ltd
3- Company_Listings стол - Брокен-Хилл Pty Ltd, зарегистрированная как на ASX (Австралийская фондовая биржа), так и на LSE (Лондонская фондовая биржа)
например на ASX = BHP и на LSE = BIL
4 При переходе на страницу «Списки компаний» для BHP я хочу, чтобы выпадающий список «Список Exchange» отображал только AMEX и NYSE (для исключений ASX и LSE).
Столы
table "companies" do |t|
t.string "name"
t.string "full_name"
t.integer "exchange_id"
create_table "company_listings" do |t|
t.integer "company_id"
t.integer "share_number"
t.integer "share_price"
t.string "option_name"
t.integer "option_strike_price"
t.date "option_expiration_date"
t.integer "exchange_id"
t.string "company_code"
table "exchanges" do |t|
t.string "name"
t.string "full_name"
Из кода для этого экрана - то, что мне нужно изменить
<%= f.hidden_field :company_id %>
<%= content_tag :tr do %>
<%= content_tag :td, content_tag(:span, "Listed Exchange"),
class: 'very_large_column' %>
<%= content_tag :td, f.collection_select(:exchange_id, Exchange.order(:id),
:id, :name, {}, {class: "input-fullwidth"}), class: 'data small_column' %>
<% end %>
<%= content_tag :tr do %>
<%= content_tag :td, content_tag(:span, "Stock Code"),
class: 'very_large_column' %>
<%= content_tag :td, f.text_field(:company_code,
class: 'small_column'), class: 'data' %>
Модели
class CompanyListing < ActiveRecord::Base
...
belongs_to :company
belongs_to :exchange
...
end
class Exchange < ActiveRecord::Base
...
has_many :company_listings, dependent: :destroy
end
спасибо - пытаются получить эту работу прямо сейчас. Не слишком уверен, как отформатировать область в self.not_listed_for_company – user1854802
thanks - steakchaser – user1854802