Полагаю, вам нужно больше, чем ответ Дэрила Сантоса . Его ответ поможет вам установить соединение с базой данных, но отображение таблиц на модели требует большей ясности.
В качестве ответа на ваш mysqli
альтернативный запрос, да, ruby также имеет разъем mysql. Но он вам не понадобится.
Стандартный пакет ROR поставляется со встроенным модулем orm, который называется ActiveRecord .
Если не указано иное, AR берет имена моделей, их множественное число и сопоставляет с таблицей, имеющей это имя, в подключенной базе данных. Существуют также другие соглашения, такие как первичный ключ, присвоение имен внешним ключам и т. Д. Вы можете искать их в документах AR.
Но вы можете изменить это поведение, как
class Book
self.table_name = 'something_other_than_books'
end
Таким образом, AR будет искать таблицу something_other_than_books
и автоматически скручивает ее столбцы в качестве свойств этого класса. Так как AR ожидает поле id
в качестве первичного ключа для этой таблицы, и если у вас есть иное значение, кроме него, вы также должны объявить его явно.
class Book
self.table_name = 'something_other_than_books'
self.primary_key = 'book_id'
end
Вот руководство для AR запросов . Кстати, у него много общего с Eloquent в PHP. Вы легко его выберете, если знакомы с ним.
По крайней мере, давайте покажем несколько примеров и их эквиваленты SQL.
Book.find(2) # based on below model
#=> SELECT * FROM something_other_than_books WHERE book_id = 2
Book.where(author: "Jack London")
#=> SELECT * FROM something_other_than_books WHERE author = 'Jack London'
Book.pluck(:book_id, :author)
#=> SELECT book_id, author FROM something_other_than_books
Book.order(book_id: :asc).pluck(:author)
#=> SELECT author FROM something_other_than_books ORDER BY book_id DESC
UPDATE
В отличие от необработанного PHP, Rails является полнофункциональным веб-приложением на основе MVC. Аналогами Rails из экосистемы PHP являются Symfony, Laravel, Cake, Yii2, FuelPHP и т. Д. Одним из основных преимуществ инфраструктуры MVC является то, что вам не нужно выполнять SQL-запросы внутри ваших представлений. Это означает, что вы не запрашиваете файл и ждете его, чтобы выполнить SQL-запрос, завернутый в HTML-код. Вместо этого вы получаете запрос, ваш маршрутизатор сопоставляет его с контроллером, передает данные в домен (модель), получает результаты, а затем отображает эти данные в файле представления.
Подумайте о файле php ниже (скажем, books.php).
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "my_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT book_id, author FROM something_other_than_books";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "Book ID: " . $row["book_id"] . " - Author: " . $row["author"] . "<br>";
}
} else {
echo "0 results found";
}
$conn->close();
?>
Итак, отправив запрос на получение http://yourdoma.in/books.php,, вы получите список книг.
В Rails ваш код лучше структурирован - вначале это может показаться немного сложным, но когда ваше приложение разрастется, вы обнаружите, что работать с повторяющимися задачами чрезвычайно легко.
Шаги для имитации приведенного выше скрипта php и его результата в Rails.
1. Определите маршрут в вашем файле маршрутов
#config/routes.rb
get '/books' => 'books#index'
#or, resources :books, only: [:index]
2.Создать действие контроллера
#app/controllers/books_controller.rb
class BooksController < ApplicationController
def index
@books = Book.pluck(:book_id, :author)
end
end
3.Книжная модель
#app/models/book.rb
class Book < ActiveRecord::Base
self.table_name = 'something_other_than_books'
self.primary_key = 'book_id'
end
4. И, наконец, просмотр файла. (если вы не укажете это явно, действие индекса в books_controller.rb попытается отобразить app / views / index.html.erb с @books
переменной экземпляра)
#app/views/index.html.erb
<% @books.each do |book| %>
Book ID: <%= book.book_id %> - Author: <%= book.author %>
<% end %>
Если вы используете рельсовые генераторы, вам не нужно создавать эти файлы один за другим, вручную. Дайте мне знать, если я смогу помочь вам больше.