ruby-on-rails - 为什么这两条路线的参数名称不同?
问题描述
我有两条路线要指向同一个控制器操作。
get '/events/:url_token' , to: 'events#show'
get '/tv/events/:url_token', to: 'events#show'
并在我的 EventsContoller 中为显示操作设置事件
@event = Event.find_by(url_token: params['id'])
当我导航到 /events/asdf 时,这很好用,因为参数看起来像
{"id"=>"asdf"}
但是当我导航到 /tv/events/asdf 我得到
{"url_token"=>"hbbnHw"}
我不明白为什么这两个路由的参数名称不同或我应该如何修复。
编辑:我在与事件相关的路线中也有这个:
resources :events do
member do
post :addeventgroup
patch :updateeventtype
patch :updateeventgroup
patch :start_event
end
解决方案
resources :events
向您的应用程序添加多个路由——其中一个类似于以下模式:
get '/events/:id', to: 'events#show'
当您不想要该路线而是想使用您定义的路线时
get '/events/:url_token' , to: 'events#show'
然后你可以禁用这样生成的路由resources :events
:
resources(:events, except: :show) do
member do
# ...
end
end
我建议阅读Rails Guides about Routing。
或者,您可以删除此get '/events/:url_token', to: 'events#show'
定义并重命名另一个中的参数,如下所示:
get '/tv/events/:id', to: 'events#show'
推荐阅读
- networking - GCE 实例无法访问 - 连接:网络无法访问
- php - 生产中的 Docker + symfony 资产 404 + nginx
- jquery - 使用没有任何类的主体更改标签的颜色
- node.js - 测试完成而不运行任何断言(ava-nodejs)
- php - Laravel 删除只是不工作
- javascript - 加载资源失败:服务器响应状态为 405 ()
- ruby-on-rails - 撬显示模型命令不起作用
- javascript - 错误:需要数据和盐参数(节点未接收来自角度的用户输入对象?)
- python - ModuleNotFoundError:没有名为“cherrypy”的模块
- ember.js - 无法使用“get”Ember 3.2 加载关系