我关注了这个railscast并成功地将国家和城市显示为动态选择菜单,以便在添加新配置文件时选择国家和城市。我在 app/views/search 中创建了一个带有索引操作的控制器“ search_controller.rb ”和一个视图“ index.html.erb ”。现在我想在 app/views/search/index.html.erb 中创建一个搜索表单
- 自动完成文本字段以按个人资料的主题进行搜索(此表中近 400 个主题)
- 国家和城市动态选择菜单可按个人资料的国家和城市进行搜索。
应用程序/模型/profile.rb
has_many :categorizations
has_many :subjects, through: :categorizations
belongs_to :country
belongs_to :city
应用程序/模型/subject.rb
has_many :categorizations
has_many :profiles, through: :categorizations
应用程序/模型/分类.rb
belongs_to :profile
belongs_to :subject
应用程序/模型/国家.rb
has_many :cities
has_many :profiles
应用程序/模型/city.rb
belongs_to :country
has_many :profiles
app/views/profiles/_form.html.erb
<div class="field">
<%= f.label :country_id %><br />
<%= f.collection_select :country_id, Country.order(:name), :id, :name, include_blank: true %>
</div>
应用程序/资产/javascripts/profiles.js.coffee
$('#profile_city_id').parent().hide()
cities = $('#profile_city_id').html()
$('#profile_country_id').change ->
country = $('#profile_country_id :selected').text()
escaped_country = country.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
options = $(cities).filter("optgroup[label='#{escaped_country}']").html()
if options
$('#profile_city_id').html(options)
$('#profile_city_id').parent().show()
else
$('#profile_city_id').empty()
$('#profile_city_id').parent().hide()