Ruby on rails 如何按自定义顺序显示“搜索”复选框

Ruby on rails 如何按自定义顺序显示“搜索”复选框,ruby-on-rails,ruby,ruby-on-rails-4,simple-form,ransack,Ruby On Rails,Ruby,Ruby On Rails 4,Simple Form,Ransack,我正在构建一个rails作业应用程序并使用ransack gem。在创建职务公告时,用户可以从集合中选择职务类型。 这就是代码 <%= f.input :role, collection: ["Fullstack Developer", "Backend Developer", "Frontend Developer", "Engineer", "IOS Developer", "Android Developer", "Designer", "Business Developer

我正在构建一个rails作业应用程序并使用ransack gem。在创建职务公告时,用户可以从集合中选择职务类型。 这就是代码

<%= f.input :role, collection: ["Fullstack Developer", "Backend 
 Developer", "Frontend Developer", "Engineer", "IOS Developer", 
 "Android Developer", "Designer", "Business Developer"], :label => 
 "Role" %>

“角色”%>
在我的作业索引中,我使用ransack显示此集合。代码如下

<div class="filter-style">
  <h4>Roles</h4>
  <% new_roles = [] %>
  <%= search_form_for @search, :class => 'filters_click' do |f| %>
    <% @jobs.each do |job| %>
      <% if job.role? %>
        <% new_roles << job.role %>
      <% end %>
    <% end %>

    <% new_roles.uniq.each do |new_role| %>
      <div class="styled-input-container">
        <a>
          <label>
            <%= check_box_tag('q[role_eq_any][]', new_role) %>
              <%= new_role %>
          </label>
        </a>
      </div>
    <% end %>
  <% end %>
</div>

角色
'过滤器|单击'do | f |%>

我现在能想到的最好的方法是做以下事情

  • 首先创建一个变量,其顺序与您希望数组的顺序相同

    <% role_order = [
      "Fullstack Developer", "Backend Developer",  "Fronten Developer",
      "Engineer",            "IOS Developer",      "Android Developer",
      "Designer",            "Business Developer"
    ] %>
    

    或者,您可以为作业角色创建模型并添加订单属性。而不是按该属性获取实例顺序

    <% new_roles = Role.where(id: @jobs.select(:role_id)).order(:order_attr) %>
    
    
    
    <% new_roles = role_order & new_roles %>
    
    <% new_roles2 = role_order & new_roles %>
    <% raise 'Missing roles in role_order array!' unless new_roles.size == new_roles2.size %>
    
    <% new_roles = Role.where(id: @jobs.select(:role_id)).order(:order_attr) %>