Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:从数据库获取值的计数_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails:从数据库获取值的计数

Ruby on rails Rails:从数据库获取值的计数,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的数据库中有一个名为“经验”的列,用户可以保存0-2年、2-5年、5-10年、10年以上的值。我的问题是如何计算这些值?我不是在寻找所有的总和,我是在尝试计算列中存在多少2-5年的值,并将其呈现给视图中的用户 因此,在视图中,用户将看到数据库表中名为experience的列中的值,然后会看到有多少作业被发布并包含该值,如下所示 经验: 0-2年3 2-5年15 目前我正在视图中执行此操作 <%= link_to "0-2 years", filtered_jobs_path(experi

我的数据库中有一个名为“经验”的列,用户可以保存0-2年、2-5年、5-10年、10年以上的值。我的问题是如何计算这些值?我不是在寻找所有的总和,我是在尝试计算列中存在多少2-5年的值,并将其呈现给视图中的用户

因此,在视图中,用户将看到数据库表中名为experience的列中的值,然后会看到有多少作业被发布并包含该值,如下所示

经验:

0-2年3

2-5年15

目前我正在视图中执行此操作

<%= link_to "0-2 years", filtered_jobs_path(experience: '0-2 years', num_days_past: params[:num_days_past], search: params[:search]) %>
   (<%= Job.where(experience: '0-2 years').size %>)<br />
应该为您提供一个哈希值,其中的键为experience字段,值为该字段的行数

<% Job.group(:experience).count.each do |name, count| %>
  <%= link_to name, filtered_jobs_path(experience: name, num_days_past: params[:num_days_past], search: params[:search]) %>
  (<%= count %>)
<% end %>
应该为您提供一个哈希值,其中的键为experience字段,值为该字段的行数

<% Job.group(:experience).count.each do |name, count| %>
  <%= link_to name, filtered_jobs_path(experience: name, num_days_past: params[:num_days_past], search: params[:search]) %>
  (<%= count %>)
<% end %>

您希望根据经验分组,然后计算:

Job.group(:experience).count
这将返回一个散列:

{
  '0-2 years' => 1,
  '10+ years' => 2,
  '2-5 years' => 1,
  '5-10 years' => 2
}
在你看来,你可以这样写:

# in controller

@exp_names = ['0-2 years', '2-5 years', '5-10 years', '10+ years']
@exp_counts = Job.group(:experience).count

# in view

<% @exp_names.each do |name| %>
  <%= link_to name, filtered_jobs_path(experience: name, num_days_past: params[:num_days_past], search: params[:search]) %>
  (<%= @exp_counts[name] %>)
  <br>
<% end %>

您希望根据经验分组,然后计算:

Job.group(:experience).count
这将返回一个散列:

{
  '0-2 years' => 1,
  '10+ years' => 2,
  '2-5 years' => 1,
  '5-10 years' => 2
}
在你看来,你可以这样写:

# in controller

@exp_names = ['0-2 years', '2-5 years', '5-10 years', '10+ years']
@exp_counts = Job.group(:experience).count

# in view

<% @exp_names.each do |name| %>
  <%= link_to name, filtered_jobs_path(experience: name, num_days_past: params[:num_days_past], search: params[:search]) %>
  (<%= @exp_counts[name] %>)
  <br>
<% end %>

我非常喜欢这个!答案很好。所以我看到了Job.group:experience.count返回0.3ms选择count*作为count\u all,jobs.experience AS jobs\u从jobs group BY jobs.experience=>{0-2年=>1,10年以上=>2,2-5年=>1,5-10年=>2}在视图中如何称呼这一点?我仔细考虑了我的答案我非常喜欢这个!答案很好。我看到了Job.group:experience.count返回0.3ms选择count*作为count_all,jobs.experience作为jobs_从jobs group按jobs.experience=>{0-2年=>1,10年以上=>2,2-5年=>1,5-10年=>2}但是在视图中我该怎么称呼它呢?我想我的答案是唯一的一点是链接在页面上的顺序不再是我想要的。你知道我怎样才能得到返回的链接,所以它的顺序是0-2年,2-5年,5-10年,10年以上?不幸的是,这不起作用,为nil:NilClass获取未定义的方法'each',从Good to go现在开始,我只需要在索引操作中添加'@exp_name'和'@exp_counts'。谢谢你的帮助,非常感谢!唯一的问题是,链接不再按照我希望的方式在页面上排序。你知道我怎样才能得到返回的链接,所以它的顺序是0-2年,2-5年,5-10年,10年以上?不幸的是,这不起作用,为nil:NilClass获取未定义的方法'each',从Good to go现在开始,我只需要在索引操作中添加'@exp_name'和'@exp_counts'。谢谢你的帮助,非常感谢!