Как вызвать метод, определенный в модели из представления? - PullRequest
0 голосов
/ 16 марта 2012

Я получаю неопределенную ошибку метода `member 'в моем следующем коде

Пожалуйста, скажите, где я ошибаюсь в следующем коде ...


У меня есть модель групп, в которой я создал метод члена следующим образом

def member(groupid,userid)
  @members = Membership.all
  @members.each do |m|
    if m.group_id == groupid and m.user_id == userid
      return true
    end
  end
end

в моем действии index groups_controller:

def index
  @group = Group.all
end

и внутри моих групп / index.html.haml Я вызываю этот метод в следующей строке

- @group.reverse.each do |group|
            %tr
            %ul{:style=>"list-style-type:square"}
              %td
              %li= link_to group.groupname,group
              - if member(@group.id,@current_user.id)
                = link_to ' Join this group', {:controller => "memberships", 
                       :action => "create", 
                       :group_id => group.id},
                       :method => "post"    

, но когда я запускаю код, я получаю неопределенный метод `member 'error

1 Ответ

1 голос
/ 16 марта 2012

member - это метод экземпляра Group. Таким образом, вы должны изменить эту строку на

- if group.member(@group.id, @current_user.id)

Но это не обязательно должен быть метод экземпляра. Он не использует ни состояния, ни чего-либо. Итак, сделайте это методом класса.

class Group
  def self.member(groupid,userid)
    @members = Membership.all
    @members.each do |m|
      if m.group_id == groupid and m.user_id == userid
        return true
      end
    end
  end
end

И назовите это так:

- if Group.member(@group.id, @current_user.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...