Как вызвать метод? - PullRequest
0 голосов
/ 31 мая 2011
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 ]

1 голос
/ 31 мая 2011

Похоже на ваш

def self.find_all_media(media_name)

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

Метод - это метод класса (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

0 голосов
/ 31 мая 2011

Используйте Abc.find_all_media. Если вы используете self в имени метода, это означает, что этот метод будет использоваться с самой моделью, а не с объектом. Надеюсь, это поможет

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