如何调用方法?

时间:2011-05-31 03:40:07

标签: ruby-on-rails

I have a method find_all_media in model abc.rb. Model xyz and abc has relationship, 
abc :has_many xyzs and
xyz :belongs_to abc



# abc.rb

method is in abc model
def self.find_all_media(media_name)

  if self.media_name == self.xyz.media_name
     return media_name
  end
end 

### view file
<% @abc.xyzs.each do |xyz| %>
<tr>
<td><%=h xyz.media_name %></td>
<td><%=h xyz.type %></td>
<td>I want to call method find all_media here ?? </td>
</tr>


I tried but not working, any 

2 个答案:

答案 0 :(得分:1)

好像你的

def self.find_all_media(media_name)

  if self.media_name == self.xyz.media_name
     return media_name
  end
end 

Method是一个类方法(self)。因此,您尝试从类实例

访问类方法
@abc

您有两个选择

1 - 使方法成为实例方法(通过删除'self')

2 - 将您的方法称为Abc.find_all_media

就像最佳做法一样,

不要直接从您的视图中调用模型,通过控制器或帮助程序

如果您的'find_all_media'方法与数据库查询有关,请考虑

:scope (in rails 3.x) (named_scope in rails 2.x)

HTH

sameera

答案 1 :(得分:0)

使用Abc.find_all_media。如果在方法名称中使用self,则意味着此方法将与模型本身一起使用,而不是与对象一起使用。希望它能帮助