所以我理解它们的部分作用以及它们的用处。我目前正在通过关于构建网络应用程序的截屏工作,即使他说如果你不理解也不要担心,我必须理解。
这是控制器和索引
的操作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如何知道使用部分?
任何方向都会非常感谢!
答案 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;