好吧,可能有简单的方法可以做到这一点,但我真的想不通。鉴于我有每个不应该存在的循环和逻辑。问题是我不知道如何在方法内部传递循环变量。
- @groups.in_groups_of(2, false).each do |groups|
.row
-groups.each do |group|
.box.col-md-5{id: "group_#{group.id}"}
%h3= group.group_name
- if UserGroup.where("group_id = ? AND user_id = ?", group.id, current_user.id).exists?
%p= link_to 'Show', group
- if current_user[:id] != group.created_by
最后我想问一下是否有必要将其移动到方法或助手中?
- if current_user[:id] != group.created_by
首先,确保您的用户模型中有这些行
class User
has_many :user_groups
end
现在在控制器中,你写:
@user_group_ids = current_user.user_groups.pluck(:group_id)
这将避免有N+1 个查询
现在在你看来
- @groups.in_groups_of(2, false).each do |groups|
.row
-groups.each do |group|
.box.col-md-5{id: "group_#{group.id}"}
%h3= group.group_name
- if @user_group_ids.include?(group.id)
%p= link_to 'Show', group
- if current_user[:id] != group.created_by
现在对于 current_user[:id] != group.created_by 不需要移动任何地方,除非它是你经常使用的东西。这是一般规则,如果您在 2 个以上的地方使用它,请将其放在可以重复使用的地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句