【问题标题】:How to map a new CRUD action in 'routes.rb'?如何在“routes.rb”中映射新的 CRUD 操作?
【发布时间】:2011-05-27 14:31:00
【问题描述】:

在我的“routes.rb”文件中,我有以下代码:

resources :users

映射我用户的控制器,例如this

如果我想为用户映射“重置”视图/url(路径:/users/reset)我必须在“routes.rb”文件中插入什么代码?

【问题讨论】:

    标签: ruby-on-rails ruby url view routes


    【解决方案1】:

    两个选项 - 我假设您只是要对会话用户进行操作,因此您不需要传递 id 来操作?如果是这样,您需要进行一些额外的更改...

    使用显式路由:

    match "/users/reset" => 'users#reset', :as => 'reset_user' 
    

    'as' 部分是可选的。

    添加一个对“集合”进行操作的新路由。这会为您提供路线,但感觉就像是 hack,我不推荐它。

    resources :users do
      collection do
        get 'reset'
      end
    end
    

    【讨论】:

    • 第二个是我想要的。谢谢。
    【解决方案2】:

    这样做:

    resources :user do
      member do
        get 'reset'
      end
    end
    

    请参阅您提到的 Rails 指南中的 this section

    【讨论】:

    • 我试过了,但我得到了这个错误:“找不到 ID=reset 的用户”,因为您的代码会得到 '/users/:id/reset'。我想像新的'/users/new'一样使用“通用”路径'/users/reset'。
    • 使用collection 而不是member
    猜你喜欢
    • 2012-12-16
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多