调用Rails部分

时间:2015-02-19 07:42:35

标签: ruby-on-rails ruby-on-rails-4

所以我理解它们的部分作用以及它们的用处。我目前正在通过关于构建网络应用程序的截屏工作,即使他说如果你不理解也不要担心,我必须理解。

这是控制器和索引

的操作
class BooksController < ApplicationController
  before_action :authenticate_user!, only: [:new, :edit, :create, :update, :destroy]
  before_action :set_book, only: [:show, :edit, :update, :destroy]

  # GET /books
  # GET /books.json
  def index
    @books = Book.where(availability: true)
  end

这是相应的index.html.erb

<p id="notice"><%= notice %></p>

<div class='row'>

  <%= render @books %>

</div>

<%= link_to 'New Book', new_book_path %>

我在书籍视图中有一部分名为_books.html.erb

现在我不确定的是@books = Book.where(availability: true)

我知道@books是索引操作的实例变量,但究竟是什么Book.where(availability: true)?我传递的参数,但我仍然迷失在书上。这是参考模型吗?我已经反复阅读了关于guides.rubyonrails的动作控制器概述,我仍然迷失在这一个奇点上,它让我疯狂,有点沮丧的是那些简单的东西没有点击。

如何调用部分_books.html.erb?如果我理解正确,def index告诉我们在我的图书视图中搜索index.html.erb是否正确?

嗯嗯输入这个(并且仍然试图找到自己的答案)让我觉得我错了。

在这个例子中,partial用于造型目的是否正确?这是我的_books.html.erb部分

  <div class='col-md-3'>
<div class='thumbnail'>
    <%= link_to book_path(book) do %>
    <%= image_tag 'book.jpg', class: 'img-responsive', alt: 'Pretty Bird'  %>
    <% end %>
  <div class='caption'>
    <h3><%=link_to book.name, book_path(book) %></h3>
    <h4><%= book.author %></h4>
    <p><%= book.description %></p>
  </div>
</div>

@books = Books.xxxx就像attr_reader一样正确吗?因此index.html.erb中的render @book基本上是说,从用户获取所有存储的书籍数据并通过_book partial显示它们,但只显示其可用性等于true的那些。这准确吗?我假设存储的数据位于我的db文件夹中的development.sqlite3中,我可以通过rails控制台查看这些数据吗?上帝,我希望至少我走在正确的轨道上。

如果是这样,我想我的问题最终是rails如何知道使用部分?

任何方向都会非常感谢!

1 个答案:

答案 0 :(得分:0)

致电时

@books = Book.where(availability: true)

因此,数据库中的书籍表已经在ActiveRecord模型Book的帮助下进行了映射。

书籍表具有唯一ID的记录,您在模型上定义的字段与数据库表中的列一起映射。可用性是表格中的列。

因此,上面的查询将调用books表并获取所有可用性为1或真实的书籍

这是对象关系映射Book是表示数据库中名为books的表的模型,

ORM是对象关系映射器。这意味着您不必自己手动调用数据库,ORM会为您处理它。

Ruby on Rails使用一个名为ActiveRecord的

<%= render @books %> 

就像

<%= render partial: 'books', collection: @books, locals: {name: "ruby"} %> 

这意味着渲染应该命名为_books的部分应该在书籍视图中,否则你也可以指定路径渲染部分:&#39; users / books&#39;