Как передать переменную цикла из цикла в контроллер? - PullRequest
0 голосов
/ 01 мая 2018

Хорошо, возможно, есть простой способ сделать это, но я действительно не могу понять это. В связи с этим у меня есть каждая петля и логика, которых там быть не должно. Проблема в том, что я не знаю, как передать переменную цикла внутри метода.

 - @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

1 Ответ

0 голосов
/ 01 мая 2018

Сначала убедитесь, что у вас есть эти строки в вашей пользовательской модели

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, не нужно никуда перемещаться, если вы не часто его используете. Это общее правило: если вы используете его более чем в двух местах, поместите его туда, где вы сможете использовать его повторно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...