在数据库中的某些用户上使用Paginate

时间:2016-04-21 23:04:16

标签: ruby-on-rails ruby kaminari paginate

我正在使用Kaminari Paginate遍历用户并给他们评估。但是,某些用户只能评估某些用户,而不是所有用户,但我对如何解决此问题感到困惑。我尝试创建一个我想要显示的用户数组,但由于我对Ruby很新,所以它无法正常工作。我明白了

<% @users.each do |user| %>

是遍历整个列表的内容,但我不确定如何根据我的需要对其进行编辑。例如,我为每个用户都有一个角色属性。我希望每个角色的用户只评估具有相同角色的其他用户。我尝试过像

这样的事情
<% @users.each do |user| if @user.role == 1 %>

但我知道确切的代码verbatum不会按照我喜欢的方式工作,但这是我想要做的一个例子,如果可能的话。总之,我想选择谁在分页列表中。以下是我正在尝试的代码。每个用户都有一个表单。

<h2>Back of House Evaluation</h2>
<br> </br>

<% @users.each do |user| %>

<h4> <%= user.name  %> </h4>
<h3> Do you have HEART?</h3>


<%= form_for(user) do |f| %>
<% begin %>


       <div class="form-group">
        <%= f.label :Hunger_for_wisdom %></label
        <div class="col-xs-10">
        <div class="form-inline">
        <div class="form-group">
             <%= f.radio_button :current_one, 1 %>
             <%= f.label :_1 %>
        </div>
        <div class="form-group">
             <%= f.radio_button :current_one, 2 %>
             <%= f.label :_2 %>
        </div>
        <div class="form-group">
             <%= f.radio_button :current_one, 3 %>
             <%= f.label :_3 %>
        </div>
        <div class="form-group">
             <%= f.radio_button :current_one, 4 %>
             <%= f.label :_4 %>
        </div>
        <div class="form-group">
             <%= f.radio_button :current_one, 5 %>
             <%= f.label :_5 %>
        </div>
    </div>
</div>

     <div class="col-md-3 col-md-offset-4">
  <%= f.submit "Submit Score", class: "btn btn-default" %>



    <% rescue ActionController::RedirectBackError %>


</div>
</div>
<% end %>

<%= paginate @users %>

<% end %>

<% end %>

提前非常感谢!!

2 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是将方法reject!用于您的用户列表。替换:

<% @users.each do |user| %>

由:

<% @users.reject!{|u| u.role != 1}.each do |user| %>

但我希望从users的列表中过滤掉不需要的controller,而不是在视图中。所以在你的控制器中你可以调用类似的东西:

@users = User.where(:role => role_id).page(params[:page])

其中role_id是角色的ID(示例中为1),params[:page]是您要从Kaminari加载的页码。

希望这可以帮助你。

答案 1 :(得分:0)

假设@user用于过滤可见的用户列表,您可以使用您的集合执行以下操作:

<% @users.select{|u| u.role == @user.role}.each do |user| %>
  # your logic/content here
<% end %>

这样,只有具有@user角色角色的用户才会被遍历。

希望它有所帮助!