Что я пытаюсь сделать:
Я пытаюсь выяснить, есть ли быстрый способ заставить country_select хранить целые числа, представляющие страны, вместо того, чтобы хранить сами названия стран / строки. Я использую страну выбора драгоценного камня .
Возможное решение:
Один способ, которым я думаю, это может быть сделано, если я установлю гем как плагин и отредактирую массив стран, чтобы массивы в основном массиве были целыми числами и строкой, например. СТРАНЫ = [["United Kingdom", 1], ["United States", 2]]
Таким образом, в моей форме будут значения, представляющие строки. Тогда в моей таблице профилей может быть столбец country_id, в котором будет храниться идентификатор выбранных стран. У меня будет отдельная таблица «страны», в которой будут храниться страны, и я буду использовать country_id таблицы профилей для ссылки на правильную страну в таблице стран.
Если сделать это таким образом, я все равно получу хорошие функции гема / плагина, такие как приоритетные страны в верхней части списка выбора. Что-то, что я не знаю, как сделать самостоятельно.
Это займет много времени, но это может сработать. Если бы я выбрал это решение, куда бы я поместил плагин? папка vendors в каталоге моих приложений, верно?
Но если есть более быстрый способ сделать это, я бы хотел сделать это таким образом.
Большее изображение:
Хорошо. У меня есть форма поиска, где пользователь может просматривать сайты, отфильтровывая результаты по:
текстовое местоположение
Пол
сексуальность
семейное положение
страна
Я использую мышление sphinx, и при фильтрации атрибутов кажется, что атрибуты должны быть представлены целыми числами, потому что все работает, кроме страны.
Я использую страну выбора gem , и кажется, что она хранит только строки, а не целое число, представляющее строку.
Я бы хотел, чтобы он хранил целые числа.
Вот некоторые константы, которые я использую в своих формах поиска:
module ApplicationHelper
GENDER = [["Select", nil],["Male", 1],["Female", 2]]
ETHNICITY = [["Select", nil],['Black', 1 ],['White / Caucasian', 2 ],['European', 3 ],['Asian', 4 ],
['Indian', 5 ],['Middle Eastern', 6 ],['Native American', 7 ],['Hispanic', 8 ],
['Mixed Race', 9 ],['Other Ethnicity', 10 ]]
MARITAL_STATUS = [[' Select', nil],['Single', 1 ],['Dating', 2 ],['In relationship', 3 ],['Married', 4 ],
['Living Together', 5 ],['Divorced', 6 ],['Separated', 7 ],['Widowed', 8 ]]
SEXUAL_PREFERENCE = [[' Select', nil],['Straight', 1 ],['Gay', 2 ],['Bi-sexual', 3 ]]
end
Форма поиска / просмотра:
<%= form_tag browsers_path, :method => 'get' do %>
<p>
Location: <%= text_field_tag :location, params[:location] %>
<br />
Country: <%= country_select :country, [ "United Kingdom", "France", "Germany" ] %>
<br />
Gender: <%= select_tag :gender, options_for_select(ApplicationHelper::GENDER, params[:gender]) %>
<br />
Ethnicity: <%= select_tag :ethnicity, options_for_select(ApplicationHelper::ETHNICITY, params[:ethnicity]) %>
<br />
Marital status: <%= select_tag :marital_status, options_for_select(ApplicationHelper::MARITAL_STATUS, params[:marital_status]) %>
<br />
Sexual preference: <%= select_tag :sexual_preference, options_for_select(ApplicationHelper::SEXUAL_PREFERENCE, params[:sexual_preference]) %>
<br />
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
Как вы можете видеть, каждый массив имеет строку и целое число. Если вы извлечете массив из гема country_select, то там будут только строки.
Буду признателен за объяснение наилучшего способа сделать то, что я пытаюсь сделать, и, если возможно, наглядный пример.
Надеюсь, этот пост имел смысл.
С уважением