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
答案 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
,则意味着此方法将与模型本身一起使用,而不是与对象一起使用。希望它能帮助