我正在使用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 %>
提前非常感谢!!
答案 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
角色角色的用户才会被遍历。
希望它有所帮助!