【问题标题】:How to hide 'id' in url and show nothing?如何在 url 中隐藏“id”而不显示任何内容?
【发布时间】:2015-02-02 17:19:23
【问题描述】:

要访问仪表板,请访问以下网址:http://localhost:3000/dashboards/1 我想隐藏 id 并在 url 中不显示任何内容来执行此操作:http://localhost:3000/dashboards/ 我看到了另一个问题,但所有问题都显示用 id 代替 name 例如。 我怎样才能隐藏 id?

【问题讨论】:

  • 您的问题从我们这边产生了更多问题 - 什么是仪表板。与用户有关吗?如果有的话,每个用户是否有多个仪表板,或者整个应用程序有一个仪表板?你如何定义你当前的路线?你可以使用单一资源吗?土豆?

标签: ruby-on-rails ruby-on-rails-4 routing routes


【解决方案1】:

您只需要在routes.rb 中定义一个新路由。如果您使用的是resources :dashboards,那么该路径已经定义并且通常保留为索引以列出所有可用对象。像这样的东西应该可以工作:

get 'dashboards' => 'dashboards#show'

还要注意,如果您需要控制器中的 id,则不能再依赖参数来获取 id,因为它不再在 url 中并且可用。您将不得不使用会话。

【讨论】:

    【解决方案2】:

    将控制器映射为resource 而不是resources。在您的routes.rb 文件更改

    resources :dashboards
    

    resource :dashboard
    

    这假设您的控制器名为DashboardsController。如果不是,请传递适当的控制器名称。

    resource :dashboard, controller: 'whatever_controller'
    

    您可能还希望仅限于显示操作,除非您有其他操作。

    resource :dashboard, only: [:show]
    

    这将创建路线

    GET /dashboard
    

    如果你不限制动作,你也会得到

    GET /dashboard/new
    POST /dashboard
    PATCH /dashboard
    DELETE /dashboard
    

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多