2015-02-19 3 views
0

Итак, я понимаю, как частичные работы и насколько они полезны. В настоящее время я работаю над сценарием по созданию веб-приложения, и хотя он говорит, что не волнуйтесь, если вы не понимаете, я должен понять, независимо от того.Вызов 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 прямо? Боже, я надеюсь, что я по крайней мере на правильном пути.

Если да, то, наверное, мой вопрос в конечном итоге заключается в том, как рельсы знают, как использовать частичное?

Любое направление было бы рад!

+0

'<% = render @books%>', который похож на '<% = render partial: 'books', collection: @books, locals: {name:" ruby "}%>', что означает, что рендеринг частичное, которое должно быть названо «_books», которое должно быть в «книжных» представлениях, иначе вы также можете указать путь «render partial:» users/books'' – Sontya

ответ

0

Когда вы звоните

@books = Book.where(availability: true) 

Так вот книги таблицы в базе данных, которая была сопоставляются с помощью ActiveRecord модели книги.

В таблице книг есть записи с уникальными идентификаторами и полями, которые вы определили на модели, сопоставлены столбцами в таблице базы данных. Доступность - столбец в таблице.

Так выше запрос будет вызывать таблицу книги и извлечь все книги, где доступность 1 или истинный

Это объектно-реляционного отображения Книга представляет собой модель, которая представляет собой таблицу в базе данных с именем, как книги,

ОРМ является реляционным картографическим объектом. Это означает, что вам не нужно вручную вызывать базу данных самостоятельно, ORM обрабатывает ее для вас.

Рубин на Rails использует один называется ActiveRecord

<%= render @books %> 

который походит

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

, что означает, что делают частичный, который должен быть назван _books, которые должны быть в воззрениях книги еще вы можете также укажите путь к частичным: «пользователи/книги»

+0

Wow это проясняет так много. Я смог это понять и понять. Спасибо. Таблица книг хранится в файле development.sqlite3 внутри db, и ORM вызывает эту базу данных, которая правильна? – BronzeTax

+0

yes ORM, который является ActiveRecord в случае, когда rails вызывает таблицу базы данных, сопоставление, которое привязывает данный класс ActiveRecord к определенной таблице базы данных, произойдет автоматически. – Sontya

Смежные вопросы