在另一个模型的显示页面上显示一个模型的属性?

时间:2012-03-13 18:15:05

标签: ruby-on-rails-3 nested-attributes

我在客户端模型中有以下def:

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

我希望cli_full_name显示在合约显示页面中。这是我的app / views / contracts / 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

没有运气。

有人可以帮我理解如何让cli_full_name显示在合约展示页面上吗?

感谢。

更新

如果你跑到客户端节目页面但我想在合约节目页面上看它是有效的:)

即使我将嵌套路线更改为Jamis Buck提出的格式:

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

我仍然无法在合约显示页面上显示cli_full_name。 也许我不了解嵌套属性和嵌套路由?

帮助?

1 个答案:

答案 0 :(得分:1)

因为您的模型指定合同有许多客户,您需要像这样访问它们

@contract.clients

然后循环遍历它们

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