Показать атрибут одной модели на странице показа другой модели? - PullRequest
0 голосов
/ 13 марта 2012

У меня есть следующее определение в модели клиента:

def cli_full_name
  [f_name, mi, l_name].join(' ')
end

Я бы хотел, чтобы cli_full_name отображалось на странице контракта. Вот моя страница приложения / views / contract / show.html.haml:

- provide(:title, @contract.authnum)
%h3
  = @contract.authnum
  %span1
    = @client.cli_full_name

Я получаю сообщение об ошибке "неопределенный метод" cli_full_name.

Ассоциация состоит в том, что контракт имеет * has_many: clients: through =>: clientlines *

Итак, я добавил вложенный маршрут в свой файл маршрутов, думая, что это заставит работать так:

 resources :contracts do
   resources :clients
 end

Не повезло.

Может ли кто-нибудь помочь мне понять, как заставить имя_символа отображать на странице показа контракта?

Спасибо.

Обновление

Это работает, если вы перешли на страницу показа клиента, но я хочу это на странице показа контракта:)

Даже если я изменю свои вложенные маршруты на формат, предложенный Джамисом Баком:

http://weblog.jamisbuck.org/2007/2/5/nesting-resources

Мне все еще не удается отобразить имя_символа на странице показа контрактов. Может я не понимаю вложенные атрибуты и вложенные маршруты?

Помощь

1 Ответ

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

Поскольку в вашей модели указано, что в контракте есть много клиентов, вам необходимо получить к ним доступ, например:

@contract.clients

, а затем просмотреть их, как

- @contract.clients.each do |client|
  = client.cli_full_name
...