Ruby on rails 5 如何更改Rails路由上的自动命名参数id?

Ruby on rails 5 如何更改Rails路由上的自动命名参数id?,ruby-on-rails-5,Ruby On Rails 5,我的路由文件有一个要完成的定义: resources :disputes do scope module: :disputes do resources :conferences, shallow: true do put :finish end end end Rails自动将参数id与名称:conference\u id放在一起,但我希望改用:id conference_finish PUT /conferences/:conference_i

我的路由文件有一个要完成的定义:

resources :disputes do
  scope module: :disputes do
    resources :conferences, shallow: true do
      put :finish
    end
  end
end
Rails自动将参数id与名称
:conference\u id
放在一起,但我希望改用
:id

conference_finish PUT      /conferences/:conference_id/finish(.:format) disputes/conferences#finish {:format=>:json}

有办法做到这一点吗?谢谢。

您可以这样做:

put "conferences/:something/finish", to: "disputes/conferences#finish"

您可以通过使用成员选项来改进Gabriel的答案,具体如下(我不知道它是否适用于您的情况):

您也可以使用单行方式:

resources :disputes do
  scope module: :disputes do
    resources :conferences, shallow: true do
      put :finish, on: :member
    end
  end
end
这样,控制器中就有了params[:id]。顺便说一下,资源嵌套深度不应超过1级。调查

resources :disputes do
  scope module: :disputes do
    resources :conferences, shallow: true do
      put :finish, on: :member
    end
  end
end