如何解决如何避免解决Rails中的路线?
| 我正在开发一个带有管理部分和公共部分的Rails应用程序。在公共部分,我只想解析索引并显示路线resources :services,:only => [:index,:show]
但是,当我点击新操作的标准URL时,它将解析为ID为“'new \'”的show操作。那就是http://foo.com/services/new返回错误“找不到ID为新的服务”。无论如何,我可以告诉Rails不要解决/ services / new吗?
我已经尝试过
resources :services,:show],:except => :new
和
resources :services,:except => :new,:show]
没有成功。
ETA(根据要求):
我的整个路线文件(无注释):
MyApp::Application.routes.draw do
resources :services,:show]
resources :packages,:show]
get \"pages/home\"
get \"pages/about\"
get \"pages/help\"
root :to => \'packages#index\'
namespace \"admin\" do
get \"pages/home\"
get \"pages/about\"
get \"pages/help\"
resources :services
match \"/services/:id/add_to_package/:package_id\" => \"services#add_package\",:as => :add_package_to_service,:via => :post,:id => /\\d+/,:package_id => /\\d+/
match \"/services/:id/remove_from_package/:package_id\" => \"services#remove_package\",:as => :remove_package_from_service,:package_id => /\\d+/
resources :packages
match \"/packages/:id/add_service/:service_id\" => \"packages#add_service\",:as => :add_service_to_package,:service_id => /\\d+/
match \"/packages/:id/remove_service/:service_id\" => \"packages#remove_service\",:as => :remove_service_from_package,:service_id => /\\d+/
resources :users
root :to => \'pages#home\'
end
end
解决方法
您可以尝试对
:id
参数施加约束
resources :services,:constraints => {:id => /\\d+/},:only => [:index,:show]
这是假设您的:id
都是基于数字的。
我也遇到了类似的情况,即重定向与资源冲突,从而解决了该问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。