【发布时间】:2015-11-10 11:43:39
【问题描述】:
更新:我快到了!请参阅此问题末尾的部分答案。
我有一个带有两个选择下拉列表的工作表单,第一个用于国家/地区,第二个用于城市。当您选择一个国家/地区时,ajax 请求会自动获取国家/地区并更新国家/地区框。
问题是选择下拉菜单很难看,我无法真正设置它们的样式。我想要的是一个下拉按钮,我可以使用 Bootstrap 让它变得漂亮:Bootstrap Button
我不必更改 jquery 或控制器逻辑,我只需更新我的视图。但我什至不知道从哪里开始。这就是我所拥有的:
<%= form_for :trip, url: {action: "index"}, html: {method: "get"} do |f| %>
<%= f.select :country_obj_id, options_for_select(@countries.collect { |country|
[country.name.titleize, country.id] }, @countries.first.name), {}, { id: 'countries_select' } %>
<%= f.select :city_obj_id, options_for_select(@cities.collect { |city|
[city.name.titleize, city.id] }, 0), {}, { id: 'cities_select' } %>
<%= f.submit "Go!" %>
<% end %>
如何将选择转换为下拉按钮?
更新:我现在可以得到回复。我只是不知道如何处理它来更新按钮。
视图有两个下拉按钮。第一个是国家,第二个是第一个国家的城市。我想更新所选国家/地区的城市列表:
<div class="dropdown" style="display:inline-block;">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Select A Country
<span class="caret"></span></button>
<ul class="dropdown-menu">
<% @countries.each do |country| %>
<%= content_tag(:li, link_to(country.name.titleize, update_cities_path(country_obj_id: country.id), remote: :true)) %>
<% end %>
</ul>
</div>
<div class="dropdown" style="display:inline-block;">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Select A City
<span class="caret"></span></button>
<ul class="dropdown-menu">
<% @cities.each do |city| %>
<%= content_tag(:li, city.name.titleize) %>
<% end %>
</ul>
</div>
选择一个国家进入 update_cities 函数,该函数获取传递的 country_obj_id 的城市。
def update_cities
@cities = CityObj.where("country_obj_id = ?",
params[:country_obj_id]).order(:name)
respond_to do |format|
format.js
end
end
然后是我不明白的部分。 format.js 将我带到 update_cities.js.coffee,我并没有改变我在选择下拉菜单上工作的原始版本:
$("#cities_select").empty()
.append("<%= escape_javascript(render(:partial => @cities)) %>")
这最终更新了我现在留在视图中的旧选择下拉列表。但是如何修改js来更新我的新下拉按钮呢?
【问题讨论】:
-
您还需要帮助还是已经解决? :)
-
在下面查看我的解决方案,@DanielLutz
标签: ruby-on-rails twitter-bootstrap ruby-on-rails-4