2011-05-17 53 views
0

嘿。我从Rails开始,我想我的问题很简单。我有2种型号:Rails - 获得该协会的所有者

class Book < ActiveRecord::Base 
belongs_to :owner 
end 

class Owner < ActiveRecord::Base 
has_many :books 
end 

我试图让这本书在展示方法的所有者,但我所做的一切说没有一个ID,我不能找到一个业主。

我的控制器有:

def show 
@book = Book.find(params[:id]) 
@owner= Owner.find(params[:owner_id]) 
end 

而我的观点:

<%= link_to owner.name, owner %> 

谢谢!

回答

3

按照从书到店主的关系,您甚至不必在控制器中执行此操作。

def show 
    @book = Book.find(params[:id]) 
end 

在您的观点:

<%= link_to @book.owner.name, @book.owner %> 
+0

谢谢!完美的作品。玩了一下我注意到,如果我喜欢'belongs_to:book_owner,:class_name =>“Owner”'和'<%= link_to @ book.book_owner.name,@ book.book_owner%>'它不起作用。这里最大的区别是什么? – Zeroz 2011-05-17 16:27:50

+0

您的'books'表中的外键需要是'book_owner_id'而不是'owner_id'才能工作。 – 2011-05-17 16:47:41

1

当您使用belongs_to :owner你可以使用它像这样:

def show 
    @book = Book.find(params[:id]) 
    @owner= book.owner 
end 

在你看来,你必须使用这些全局@变量:@book, @ownerbookowner将不起作用。