Rails入门问题

Chr*_* F. 1 ruby ruby-on-rails

我是铁杆的新手,我一直在寻找这个问题的答案.这就是我所拥有的:

class Item < ActiveRecord::Base
  belongs_to :book

class Book < ActiveRecord::Base
  has_many :items
Run Code Online (Sandbox Code Playgroud)

现在我想列出所有项目及其属性和与之相关的书籍.它们将在items_controller.rb中的索引下

class ItemsController < ApplicationController
  # GET /items
  # GET /items.xml
  def index
    @items = Item.all
Run Code Online (Sandbox Code Playgroud)

现在我如何处理ItemsController中的书籍,以便我可以在index.html.erb中列出它们,记住一个项目只属于一本书?如果我补充:

@books = items.book.find
Run Code Online (Sandbox Code Playgroud)

在@items = Item.all下,所以我可以在index.html.erb中引用它们我得到:

#<Array:0x10427f998>的未定义方法'book'

我觉得答案很简单,但到目前为止我还没弄明白.有没有你们知道的教程可以解决这个问题?

谢谢!

Rya*_*ary 5

在您的视图中,当您遍历所有人时@items,只需参考每本书.示例ERB(app/views/items/index.html.erb):

<% @items.each do |item| -%>
  Item: <%= item.name %>
  Book: <%= item.book.title %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)

相反,如果您打算在每本书下显示每本书及相关项目,那么您最好使用该书index上的操作BooksController.查找所有书籍,遍历每本书,并为每本书迭代该书的项目.