Ruby on rails 用“显示用户”;“最完整”;在使用Rails计数器缓存的视图中

Ruby on rails 用“显示用户”;“最完整”;在使用Rails计数器缓存的视图中,ruby-on-rails,Ruby On Rails,我正在构建我的第一个RoR应用程序,它涉及任务分配。用户可以创建工作分配,向这些工作分配中添加任务,还可以将工作分配标记为完成。我有一个“成就”页面,显示一个具有“完成最多”任务的特征用户(完成5项以上任务的用户)。我的问题在于,用户不会随着完成的工作分配计数而改变。目前我只有2个用户。用户1已完成8项作业,用户2已完成7项作业。User2显示为“完成任务最多的特色用户” 我的代码如下: 分配控制器 class AssignmentsController < ApplicationCont

我正在构建我的第一个RoR应用程序,它涉及任务分配。用户可以创建工作分配,向这些工作分配中添加任务,还可以将工作分配标记为完成。我有一个“成就”页面,显示一个具有“完成最多”任务的特征用户(完成5项以上任务的用户)。我的问题在于,用户不会随着完成的工作分配计数而改变。目前我只有2个用户。用户1已完成8项作业,用户2已完成7项作业。User2显示为“完成任务最多的特色用户”

我的代码如下: 分配控制器

class AssignmentsController < ApplicationController
    before_action :authenticate_user!, except: [:index, :show]
    before_action :set_assignment, only: [:show, :edit, :update, 
   :destroy]

  #GET/ASSIGNMENTS
  def index
    user = User.find params[:user_id]
    @incomplete_assignments = user.assignments.incomplete
    @complete_assignments = user.assignments.complete
  end#index

  def new
    @assignment = current_user.assignments.build
    @assignment.tasks.build
  end#new

  #POST
  def create
    @assignment = current_user.assignments.build(assignment_params)
     if @assignment.save
       redirect_to [current_user, @assignment], notice: "Assignment was created successfully!"
     else
       render :new
     end
   end #create

   def show
      #@user = current_user.assignments
      @task = Task.new
    end#show

#PATCH
   def edit
   end

  def update
    @assignment.update(assignment_params)

    redirect_to [current_user, @assignment], notice: "Assignment updated successfully!"
  end#update


 #DELETE
  def destroy
    @assignment.destroy

    redirect_to [current_user, @assignment], notice: "Assignment was deleted successfully!"
  end #destroy

  def completed
     Assignment.where(id: params[:assignment_ids]).update_all(status: true)

     redirect_to user_assignments_path(current_user.id)
  end#completed

   private
#STRONG PARAMS
   def set_assignment
     @assignment = Assignment.find(params[:id])
   end

   def assignment_params
     params.require(:assignment).permit(:name, :due_date, task_attributes: [:name])
   end

end#class
类分配控制器
用户控制器

class UsersController < ApplicationController
  before_action :authenticate_user!

  def show
    @user = User.find(params[:id])
    @assignment = Assignment.new

    redirect_to user_path(@user)
  end

  def show_completed
    @users = User.all
  end

end
class UsersController
我对成就的看法

<h3> Status of who has done what</h3>
  <br>
    <% for user in @users %>
      <%= user.email %> has completed <%= user.assignments.count %> assignments. <br>
    <% end %>

<% if user.assignments.complete.count > 5 %>
<h1> **Featured User** </h1>
  <h2><%= user.email %> has completed the most assignments!</h2>
    <% else %>
     <p> Not enough completed Assignments to be featured!</p>
  <% end %>

  <%= link_to 'Back to your asssignments', user_assignments_path(current_user, @assignment) %>
谁做了什么的状态

已完成作业
5 %> **特色用户** 完成的作业最多! 完成的作业不足,无法突出显示


这可能是对如何正确使用的误解。在方法中计数,或者像我认为的那样简单,我说显示分配大于5的用户。我的应用程序正在这样做。

看起来您关闭了
@users
for
循环,第二个
用户
变量来自哪里?行
5%>
中的一个,是哪个用户填充该变量?既然没有循环,有没有可能只是选择了第一个循环,看起来没有循环?@RockwellRice,你知道,老实说,我甚至没有注意到这一点。当变量来自何处或如何工作时,你的猜测和我的一样好。我在运行应用程序时从未出错,所以我认为一切正常。当我删除它时,它会关闭初始循环,它会将两个用户都显示为特征用户,我试图找到一种方法,只显示计数最高的用户。我不认为这会像我希望的那样简单。