我在以下代码中遇到未定义的方法`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
在我的groups_controller索引操作中:
def index
@group = Group.all
end
并在我的groups / 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'错误
答案 0 :(得分:1)
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)