Rails link_to 最后一个脚手架项目

Posted

技术标签:

【中文标题】Rails link_to 最后一个脚手架项目【英文标题】:Rails link_to Last Scaffold Item 【发布时间】:2017-01-08 08:29:49 【问题描述】:

我正在开发一个学习平台,在这个阶段有用户、管理员和“提要”(包含学习内容的页面)。我想创建一个链接,将用户带到管理员创建的最新提要。在控制台中,我可以使用 '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' 操作来处理这个问题(例如:)?

【问题讨论】:

【参考方案1】:

有两种方法可以做到这一点。您可以在 routes.rb 中为您的提要资源添加一个成员操作,命名为 latest(或任何您喜欢的)。然后您将创建相应的控制器操作和视图。在控制器操作中,您将设置@feed = Feed.last。第二个选项是链接到索引或显示操作,将 GET 参数添加到 URL,然后将逻辑放入控制器操作中,如果设置了参数,则返回 Feed.last。

【讨论】:

感谢您的回复。我会试一试,看看在应用程序中什么效果最好。【参考方案2】:

您可以为此创建一个单独的控制器操作(以保持 URL 不变),或者只是这样做:

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

请注意,我添加了.order。这是为了确保它是根据创建时间的最后一个,而不是记录的 ID。

【讨论】:

以上是关于Rails link_to 最后一个脚手架项目的主要内容,如果未能解决你的问题,请参考以下文章

脚手架 Rails4 空控制器

在 Rails 中更改脚手架控制器生成器模板

基本 .ajax 发布到 rails 3.2.2 脚手架,生成“警告:无法验证 CSRF 令牌真实性”

如何更改 Rails 脚手架中的默认模型模板?

Rails 脚手架黑色背景

在 Rails 中撤消脚手架