Rails link_to 最后一个脚手架项目
Rails link_to Last Scaffold Item
我正在开发一个学习平台,该平台现阶段有用户、管理员和 'feeds'(包含学习内容的页面)。我想创建一个 link 将用户带到管理员创建的最新提要。在控制台中,我可以通过 '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 "Latest Feed"、___________ %>)?
有两种方法可以做到这一点。您可以将成员操作添加到名为 latest(或您喜欢的任何名称)的 routes.rb 中的提要资源。然后您将创建相应的控制器操作和视图。在控制器操作中,您将设置@feed = Feed.last。第二个选项是 link 到索引或显示操作,将 GET 参数添加到 URL 然后将逻辑放入控制器操作中 returns Feed.last 如果参数已设置。
您可以为此进行单独的控制器操作(以保持 URL 不变),或者只是这样做:
<%= link_to "Latest Feed", Feed.order(:created_at).last %>
请注意,我添加了 .order
。这是为了确保根据创建时间它是最后一个,而不是记录的 ID。
我正在开发一个学习平台,该平台现阶段有用户、管理员和 'feeds'(包含学习内容的页面)。我想创建一个 link 将用户带到管理员创建的最新提要。在控制台中,我可以通过 '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 "Latest Feed"、___________ %>)?
有两种方法可以做到这一点。您可以将成员操作添加到名为 latest(或您喜欢的任何名称)的 routes.rb 中的提要资源。然后您将创建相应的控制器操作和视图。在控制器操作中,您将设置@feed = Feed.last。第二个选项是 link 到索引或显示操作,将 GET 参数添加到 URL 然后将逻辑放入控制器操作中 returns Feed.last 如果参数已设置。
您可以为此进行单独的控制器操作(以保持 URL 不变),或者只是这样做:
<%= link_to "Latest Feed", Feed.order(:created_at).last %>
请注意,我添加了 .order
。这是为了确保根据创建时间它是最后一个,而不是记录的 ID。