我正在写一个应用程序,我需要覆盖模型的默认路由助手。所以如果我有一个名为Model的模型,用相应的helper model_path()生成“/ model/[id]”。我想重写该助手来生成“/something/[model.name]”。我知道我可以在视图助手中做到这一点,但有没有办法在路由级别覆盖它?覆盖Rails默认路由助手
2
A
回答
3
范围您可以在模型定义to_param
。它的返回值将在生成的URL中用作id。
class Thing
def to_param
name
end
end
的您可以将您的路线,像这样
scope "/something" do
resources :things
end
或者适应范围你的资源,你也可以使用子资源是适用的。
最后你需要修改你的控制器,因为Thing.find(params[:id])
不会工作。
class ThingsController < ApplicationController
def show
@thing = Thing.where(:name => params[:id).first
end
end
你可能想确保你的Thing
的name
是独一无二的,你会看到奇怪的事情,如果它不是。
要实现这一切的节省自己的麻烦,你可能也有兴趣friendly_id,让你这和一些额外的行为(例如使用产生的蛞蝓)
0
您需要的routes.rb
scope "/something" do
resources :models
end
相关问题
- 1. 覆盖Rails中的默认路由
- 2. CakePHP 3覆盖默认路由
- 3. default_url_options不覆盖路由默认
- 4. Rails路由:为路径助手提供默认值
- 5. 覆盖Rails路由助手的嵌套资源
- 6. 覆盖Rails的路由
- 7. Rails 3 - 覆盖路由
- 8. 覆盖Rails路由器
- 9. Rails - 前缀路由助手
- 10. 谷歌眼镜 - 覆盖默认手势
- 11. 在Rails中覆盖URL助手
- 12. Rails覆盖默认范围全局
- 13. Rails的模型as_json覆盖默认值
- 14. 覆盖默认标题搜索路径
- 15. 如何覆盖rails中的路径助手?
- 16. 覆盖默认值
- 17. 如何正确覆盖默认路由器?
- 18. 如何覆盖Sylius中的默认登录重定向路由
- 19. 覆盖Laravel 5.4中的默认Auth路由
- 20. 覆盖默认的路由,如果没有参数指定
- 21. Laravel 5.2资源路由覆盖默认行为
- 22. 如何使用Html.ActionLink覆盖路由表的默认值?
- 23. 在Rails 2中覆盖资源路由
- 24. 的Rails HAML选择助手默认值
- 25. Rails选择助手 - 默认设置?
- 26. 包装默认的servlet,但覆盖默认的webapp路径
- 27. Android路由覆盖
- 28. Rails 3子域路由和URL助手
- 29. Rails的路由和视图助手名
- 30. Rails - 缺少路由助手前缀
好!正是我在找什么 - 谢谢! – tpalmer 2012-03-16 20:15:30