首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何引用rails index.html.erb视图中的联接表列

如何引用rails index.html.erb视图中的联接表列
EN

Stack Overflow用户
提问于 2016-01-02 01:19:42
回答 1查看 681关注 0票数 0

我有3个Rails 4.2表:书籍、标签、分类,其中对其他两个表的分类是很多到多个联接表。

在show.html.erb文件中,我可以说

代码语言:javascript
复制
<%= @categorization.book.title %>

而且书名会显示出来,但是在index.html.erb里面,如果我说类似的话

代码语言:javascript
复制
<%= categorizations.each do |categorization| %>
<%= categorization.book_id %> # this is ok
<%= categorization.book.title %> # not ok
 ...
<% end %>

错误信息是

代码语言:javascript
复制
undefined method `title' for nil:NilClas

我确信有一种方法可以让rails做到这一点,但我做得不对。是否有一种方法可以要求控制器使用所有三个表而不是仅使用联接表来进行连接?或者我是否需要在循环中实例化一个book对象(听起来很难看,但是.)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-02 01:31:09

听起来你好像错过了模型中的ActiveRecord关联。为了在您的book模型上有一个categorization访问器,您需要在模型中定义关联。从上面的内容来看,您可能想要创建一个has_many :through关联。

有关更多细节,请参见活动记录关联文档。我想它会是这样的:

代码语言:javascript
复制
class Book < ActiveRecord::Base
  has_many :categorizations
  has_many :tags, through: :categorizations
end

class Categorization < ActiveRecord::Base
  belongs_to :book
  belongs_to :tag
end

class Tag < ActiveRecord::Base
  has_many :categorizations
  has_many :books, through: :categorizations
end

一旦建立了关联,就应该能够在没有问题的情况下执行@categorization.book

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34561662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档