加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Grouped Collection选择按字母顺序排列的Rails

发布时间:2020-12-17 01:47:40 所属栏目:百科 来源:网络整理
导读:我终于想出了如何使用 this tutorial实现动态选择菜单. 一切正常,但是如何按名称组织下拉列表中的城市…. 以下是我写的所有代码. (如果您需要任何进一步的信息,请告诉我) 新的铁路请帮助:) VIEWS %= simple_form_for ([@book,@rating]) do |f| % div class="
我终于想出了如何使用 this tutorial实现动态选择菜单.

一切正常,但是如何按名称组织下拉列表中的城市….

以下是我写的所有代码. (如果您需要任何进一步的信息,请告诉我)

新的铁路请帮助:)

VIEWS

<%= simple_form_for ([@book,@rating]) do |f| %>

  <div class="field">
    <%= f.collection_select :state_id,State.order(:name),:id,:name,{:include_blank=> "Select a State"},{:class=>'dropdown'} %>
  </div>


  ### I would like the order of the cities displayed in the drop down to be alphabetized 
  <div class="field">
    <%= f.grouped_collection_select :city_id,:cities,{:include_blank=> "Select a City"},{:class=>'dropdown'} %>
  </div>        

<% end %>

解决方法

选项1:在您的城市模型中,添加一个 default scope,指示按字母顺序返回的城市:

# app/models/city.rb
default_scope :order => 'cities.name ASC'

默认情况下,City对象的集合将按名称的字母顺序返回.

选项2:在State模型中定义一个named scope,它按字母顺序返回城市作为State对象的关联:

# app/models/state.rb
scope :cities_by_name,-> { cities.order(name: :asc) } # Rails 4

scope :cities_by_name,cities.order("name ASC") # Rails 3

然后,将您的范围查询传递给您的grouped_collection帮助器:

f.grouped_collection_select :city_id,:cities_by_name,{:class=>'dropdown'}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读