Ссылка на последний пост с домашней страницы в приложении Rails - PullRequest
0 голосов
/ 10 мая 2018

Я создаю приложение Rails, где у меня есть отдельные записи, называемые фильмами.Я хотел бы отобразить ссылку на последнюю запись на домашней странице (отдельный контроллер), и я изо всех сил стараюсь заставить ее работать.

Мой films_controller.rb выглядит следующим образом (отрывок):

def show
   @film = Film.find(params[:id])
end 

Мой home_controller.rb имеет только следующее:

def index
end

И мой файл просмотра (index.html.erb) имеет следующее:

<%= link_to @film.last.filmTitle, film_path(@film) %>

Я получаю следующееошибка:

Couldn't find Film with 'id'=#<Film::ActiveRecord_Relation:0x007fc93f2d1fd0>

С выделенным @film.find(params[:id]).

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Методу index нужно что-то, в настоящее время он не связан с ActiveRecord, как model или table, поэтому

Couldn't find Film with 'id'=#<Film::ActiveRecord_Relation:0x007fc93f2d1fd0>

Так что есливам нужно показать последние записи в индексе, тогда вы могли бы что-то вроде этого

def index
   @films = Film.limit(10).order(created_at: :desc) #=> or you can use id
end

он покажет последние 10 записей, для этого в index.html.erb как это

<% @films.each do |film| %>
    <%= link_to film.filmTitle, film_path(film) %>
<% end %>

ВС другой стороны, если вам нужно показать только одно сообщение, которое является последним, вам следует изменить этот запрос следующим образом: limit(10) на limit(1), или вы можете использовать метод last, например,

def index
   @film = Film.last
   #or
   #@films = Film.limit(1).order(created_at: :desc) #=> or you can use id
end

если вы используете этот @film = Film.last, тогда вашему индексному файлу понравится

<%= link_to @film.filmTitle, film_path(@film) %>

, в противном случае вам нужно использовать метод each, который описан ранее.

0 голосов
/ 10 мая 2018

Метод last:

Найти последнюю запись (или последние N записей, если указан параметр). Если порядок не определен, он будет упорядочен по первичному ключу.
источник

Вы можете добавить переменную экземпляра @last_film в свой контроллер индекса и использовать ее в представлении.

def index
  @films = Film.all
  @last_film = Film.last
end

и в вашем index.html.erb

<%= link_to @last_film.filmTitle, film_path(@last_film) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...