Итак, я понимаю, как частичные работы и насколько они полезны. В настоящее время я работаю над сценарием по созданию веб-приложения, и хотя он говорит, что не волнуйтесь, если вы не понимаете, я должен понять, независимо от того.Вызов Rails Partials
Это контроллер и действие для индекса
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)
? I параметр передается, но я все еще теряюсь в Книге. Это ссылка на модель? Я прочитал обзор Action Controller на guide.rubyonrails несколько раз, и я все еще теряюсь в этой единственной точке, и это сводит меня с ума и слегка расстраивает то, что простое не щелкает.
Как именно вызывается частичный _books.html.erb
? Если я правильно понял, def index
рассказывает, что рельсы ищут мои книги для index.html.erb
правильно?
Хммм, набрав это (и все еще пытаясь найти ответ для себя), я подумал, что все это неправильно.
Частично для правильной установки в этом случае? Это мой _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
правильно? Таким образом, render @book
в index.html.erb в основном говорит, извлекает все сохраненные данные книги у пользователя и отображает их через партию _book, но только те, чья доступность равна true. Это точно? И я полагаю, что хранящиеся данные находятся в файле development.sqlite3 в моей папке db и что я могу просматривать эти данные через консоль rails прямо? Боже, я надеюсь, что я по крайней мере на правильном пути.
Если да, то, наверное, мой вопрос в конечном итоге заключается в том, как рельсы знают, как использовать частичное?
Любое направление было бы рад!
'<% = render @books%>', который похож на '<% = render partial: 'books', collection: @books, locals: {name:" ruby "}%>', что означает, что рендеринг частичное, которое должно быть названо «_books», которое должно быть в «книжных» представлениях, иначе вы также можете указать путь «render partial:» users/books'' – Sontya