如何在rails视图中按字母顺序对包含字符串的列表进行排序 - rails 4

时间:2015-07-06 19:06:40

标签: ruby-on-rails ruby sorting ruby-on-rails-4

我是rails的新手,非常感谢任何帮助。

  • 我正在尝试按状态对列表进行排序,但我在代码中输入了字符串"Pending"
  • 我认为错误正在提示,因为它无法按顺序放置状态,因为我有一个字符串

有人可以建议按字母顺序排序列表的最佳方法,其中列表中包含一个字符串 - 谢谢

  

错误消息

comparison of String with nil failed
  

jobseekerpg.html.erb

  <% @userj_applications.sort_by(&:status).each do |application| %>
    <%= link_to application.advert.title, userr_advert_path(application.advert.userr, application.advert) %> |
    <%= application.advert.city %> |
    <%= application.advert.category_country.name %> |
    <span>
      status:
      <% if application.status == nil %>
        <%= "Pending" %>
      <% else %>
        <%= application.status %>
      <% end %>
    </span> |
    applied: <%= application.created_at.strftime("%B %d, %Y") %><br>
  <% end %>
  

static_controller.rb

class StaticPagesController < ApplicationController
  respond_to :html, :xml, :json

  def jobseekerpg
    @userj = Userj.find(current_userj)
    @userj_applications = @userj.forms
  end
 end
  

我的建议:

  • 我目前在我的表格中有一个名为status的列
  • 我在表格中创建了另一个名为statusPending
  • 的列
  • 将其设为hidden_​​field并将其分配给待处理的statusPending:Pending
  • 因此,只要申请状态为nill,我就可以使用if & else statement来调用application.statusPending
  • 但是我不需要按status排序,我需要按status&amp; statusPending

任何建议或帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

  

有人可以建议最好的方法来整理列表   字母顺序列表中包含一个字符串 - 谢谢

Array#sort

答案 1 :(得分:0)

当sort_by方法尝试将非null状态与null状态进行比较时,您似乎得到了该错误。您可以尝试替换您的陈述:

@userj_applications.sort_by(&:status).each do |application|

@userj_applications.sort {|x,y| (x.status || '') <=> (y.status || '') }.each do |application|

这种方式在排序期间将零值视为空字符串。

答案 2 :(得分:0)

stringList.sort! 

“array.sort!”应该列表内联排序。 以下是块http://www.dotnetperls.com/sort-ruby

的一些ruby示例