【问题标题】:How to mask URL rails如何屏蔽 URL 导轨
【发布时间】:2018-05-28 17:01:44
【问题描述】:

我是 Rails 新手。这里试图替换 URL 中的一个单词。我的routes.rb 是:

resources :senders, only: [:index, :update]
 get '/senders/:id', constraints: { :id => /[0-9]+/ }, to: 'senders#show'
 put '/senders/:id', constraints: { :id => /[0-9]+/ }, to: 'senders#update'
 get '/senders/:id/check_status/:ip_index', constraints: { :id => /[0-9]+/, :ip_index => /[0-3]/ }, to: 'senders#check_status'

它在 url 链接中显示为

localhost:3000/senders

但我希望它显示为

localhost:3000/receivers

我必须进行哪些更改才能显示接收器/173?

【问题讨论】:

    标签: ruby model-view-controller routes


    【解决方案1】:

    无需更改控制器中的任何内容,您可以执行以下操作:

    resources :receivers, only: [:index, :update], controller: 'senders'
     get '/receivers/:id', constraints: { :id => /[0-9]+/ }, to: 'senders#show'
     put '/receivers/:id', constraints: { :id => /[0-9]+/ }, to: 'senders#update'
     get '/receivers/:id/check_status/:ip_index', constraints: { :id => /[0-9]+/, :ip_index => /[0-3]/ }, to: 'senders#check_status'
    

    但您还应该更改控制器名称并执行以下操作:

    首先更改您的控制器名称。
    app/controllers/senders_controller.rb 重命名为app/controllers/receivers_controller.rb

    并将控制器中的第一行:
    SendersController < ApplicationController改为ReceiversController < ApplicationController

    最后,将您的config/routes.rb 更改如下:

    resources :receivers, only: [:index, :update]
         get '/receivers/:id', constraints: { :id => /[0-9]+/ }, to: 'receivers#show'
         put '/receivers/:id', constraints: { :id => /[0-9]+/ }, to: 'receivers#update'
         get '/receivers/:id/check_status/:ip_index', constraints: { :id => /[0-9]+/, :ip_index => /[0-3]/ }, to: 'receivers#check_status'
    

    您可以从documentation 了解更多关于 Rails 路由的信息。

    【讨论】:

    • 这个答案很接近,但不是完全正确。在第一部分描述路由更改而不更改控制器中的任何内容,更改为 resources :receivers... 会破坏 index 操作,因为它将被路由到 ReceiversController
    • 谢谢,这真的很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    相关资源
    最近更新 更多