Бази c рельсы включаются .. Результат - ресурс - PullRequest
0 голосов
/ 22 января 2020

Я довольно новичок в рельсах и делаю приложение, которое перечисляет альбомы. Каждый альбом должен быть загружен двумя или тремя треками предварительного просмотра из этого альбома.

Все, что я хочу сделать, - это получить preview_url из таблицы предварительного просмотра, где значение album_id совпадает с текущим альбомом. В mysql я бы использовал левое соединение:

SELECT preview_id FROM previews WHERE album_id = '{$sanitized_album_id}'...

Я просто не уверен, как этого добиться в ruby. Я не могу найти ни одного примера, который бы не увлекался постами и комментариями, и его недостаточно просто щелкнуть.

Мой метод контроллера альбомов выглядит следующим образом:

def show
  @previews = Preview.where(album_id: @album.id).order(track_number: :asc)
end

И мое шоу. html .erb файл должен l oop Результаты с этим (упрощенным) кодом:

<% @previews.each do |preview| %>
  <iframe src="<%= preview %>"></iframe>
<% end %>

Хотя я не вижу ошибок и нужное количество предварительных просмотров загружается для для каждого альбома полученный код не имеет смысла.

Я ожидаю, что переменная предварительного просмотра внутри do l oop будет выглядеть примерно так:

https://website.com/previews/1984628754234

Вместо этого она выглядит примерно так:

#<Preview:0x00007fcc08572c38> 

Полагаю, это ресурс базы данных или что-то в этом роде, но не фактические данные, о которых я [думаю, я] запрашивал.

Все youtube и прочее не помогли мне и мне » у меня осталось всего несколько волосков ... Кто-нибудь из вас, фантазер c кодировщиков, может уделить время, чтобы показать мне мои глупые ошибки?

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 января 2020

Это загрузит все атрибуты предварительного просмотра, он внутренне выполняет SELECT *.

  @previews = Preview.where(album_id: @album.id)

при циклическом просмотре @previews вам потребуется вызывать preview.preview_id для каждой записи, чтобы получить значение для этого столбца.

Чтобы получить запрос, подобный тому, который вы показали - SELECT preview_id - вы можете использовать Preview.where(album_id: @album.id).select(:preview_id). Вам все равно придется вызывать .preview_id для каждой записи в списке, но он не будет загружать дополнительные данные.

Если вы хотите сделать запрос, но вам нужен простой массив значений preview_id , вы можете использовать Preview.where(album_id: @album.id).pluck(:preview_id).

См .:

0 голосов
/ 22 января 2020

Это экземпляр Preview. Возможно, вам нужно поле для предварительного просмотра, например:

<iframe src="<%= preview.preview_url %>"></iframe>

Вы не можете просто загрузить модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...