Rails link_to Последний элемент лесов

Я работаю над обучающей платформой, которая на данном этапе имеет пользователей, администратора и «каналы» (страницы с учебным контентом). Я хотел бы создать ссылку, которая приведет пользователей к новейшему каналу, созданному администратором. В консоли я мог найти эту запись с помощью «feed.last».

Вот маршруты в моем приложении:

                   feeds GET    /feeds(.:format)               feeds#index
                         POST   /feeds(.:format)               feeds#create
                new_feed GET    /feeds/new(.:format)           feeds#new
               edit_feed GET    /feeds/:id/edit(.:format)      feeds#edit
                    feed GET    /feeds/:id(.:format)           feeds#show
                         PATCH  /feeds/:id(.:format)           feeds#update
                         PUT    /feeds/:id(.:format)           feeds#update
                         DELETE /feeds/:id(.:format)           feeds#destroy
        new_user_session GET    /users/sign_in(.:format)       devise/sessions#new
            user_session POST   /users/sign_in(.:format)       devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
           user_password POST   /users/password(.:format)      devise/passwords#create
       new_user_password GET    /users/password/new(.:format)  devise/passwords#new
      edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                         PATCH  /users/password(.:format)      devise/passwords#update
                         PUT    /users/password(.:format)      devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)        devise/registrations#cancel
       user_registration POST   /users(.:format)               devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)          devise/registrations#edit
                         PATCH  /users(.:format)               devise/registrations#update
                         PUT    /users(.:format)               devise/registrations#update
                         DELETE /users(.:format)               devise/registrations#destroy
                    root GET    /                              pages#home

Есть ли способ написать действие 'link_to', чтобы справиться с этим (например: ‹%= link_to "Последняя лента", ___________ %>)?


person ThaddeusM    schedule 31.08.2016    source источник


Ответы (2)


Есть 2 способа сделать это. Вы можете либо добавить действие члена к вашему ресурсу каналов в route.rb с именем «последнее» (или как вам угодно). Затем вы должны создать соответствующее действие контроллера и представление. В действии контроллера вы должны установить @feed = Feed.last. Вторым вариантом будет ссылка на действие index или show, добавление параметра GET к URL-адресу, а затем добавление логики в действие контроллера, которое возвращает Feed.last, если параметр установлен.

person Frank Vinci    schedule 31.08.2016
comment
Благодарю за ваш ответ. Я попробую и посмотрю, что лучше всего работает в приложении. - person ThaddeusM; 01.09.2016

Вы можете либо сделать для этого отдельное действие контроллера (чтобы URL оставался постоянным), либо просто сделать это:

<%= link_to "Latest Feed", Feed.order(:created_at).last %>

Обратите внимание, что я добавил .order. Это делается для того, чтобы он был последним по времени создания, а не по идентификатору записи.

person ollpu    schedule 31.08.2016