2012-03-13 56 views
0

我在客户端模式下DEF:在另一个模型的显示页面上显示一个模型的属性?

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

我想cli_full_name在合同显示页显示。这里是我的应用程序/视图/合同/ show.html.haml页:

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

我得到一个错误, “未定义的方法” cli_full_name。

该协会是合同有*的has_many:客户:通过=>:clientlines *

所以我增加了一个嵌套的路线到我的路线文件心想这下把事情的工作方式如下:

resources :contracts do 
    resources :clients 
end 

没有运气。

是否有人可以帮助我了解如何获得cli_full_name显示合同显示页上?

谢谢。

更新

,如果你跑过来给客户展示页它的工作原理,但我想它的合同显示页面上:)

即使我改变我的嵌套的路线通过了Jamis提出的格式巴克:

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

我仍然无法获得cli_full_name显示在合同显示页面上。 也许我不明白嵌套的属性和嵌套的路线?

帮助?

+0

快速注意许多客户端:它确实有助于遵循用于命名事物的Rails约定。而不是'cli_full_name',只是'full_name'更好,因为它总是被客户端所限制。可以拼写出f_name,mi和l_name(例如,first_name,initial,last_name)......以及在你的客户端模型中创建一个full_name方法,该方法可以从您拥有的组件中创建一个全名! Rails完全遵循以下约定来使一切变得更加简单。 – 2012-03-14 00:12:18

+0

Thnaks @tharrison ...会做。 – thomasvermaak 2012-03-27 20:50:02

回答

1

因为你的模型规定,合同有你需要访问他们这样

@contract.clients 

,然后遍历它们类似于

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

感谢NullRef ....我将上面的代码添加到我的合同显示页面吗?如果是,则返回nilNilClass – thomasvermaak 2012-03-13 19:33:47

+0

的“未定义方法”客户端再试一次。我有一个错字。 '@合同'不是'@合同'。对不起 – NullRef 2012-03-13 19:40:20

+0

再次感谢......我有合同而不是合同。 – thomasvermaak 2012-03-13 19:42:50

相关问题