回答
嗯,我建议你最好按照惯例如何处理这个问题。如果您仍然坚持使用这些“奇怪的”URL并且想要忽略在进一步开发期间可能产生的问题/头痛,那么尝试使用折射。
我不想粗鲁,但目前在我看来,你不明白为什么宁静的URL是他们的方式。请首先了解此背后的设计,然后重新考虑您的应用/控制器和路由设计。我敢打赌你会被启发。
在此示例中,您的网址应该可能为/regions/1/payrolls
与map.resources :regions, :has_many => :payrolls
。那么您的工资单将由PayrollsController
提供params[:region_id]
- 这实际上是有意义的(也可能是您试图通过您的URL布局实现的)。代码片段:
def index
if params[:region_id]
@region = Region.find(params[:region_id])
@payrolls = @region.payrolls
else
@payrolls = Payroll.all
end
end
如果你还是想有不同的命名URL下的资源,使用以下命令:
map.resources :regions do |regions|
regions.resources :tasks, :as => :payrolls
end
这将使用指定的URL部分嵌套的资源映射到任务控制器“就业”。但是,这可能不会像您所期望的那样工作,因为宁静的逻辑意味着您应该在PayrollsController
中处理薪资模型。否则,你可能会遇到奇怪的代码。也许你的设计TasksController
是错的?尽管你将它命名为工资单,但Rails可能希望将任务转交给你的任务控制器。至少这可能会让人困惑(但是,它实际上并不期望这些是任务模型,所以它可能会起作用)。
顺便提一句 - 请记住:“宁静”也意味着你的应用程序应该回答资源上的标准动词,而不仅仅是使用“足智多谋”的路线。这也是关于GET,PUT,DELETE和POST http动词,当然还有“编辑”,“新”等默认动作。不要试图让你的控制器变得庞大而复杂。遵循“格格控制器 - 胖模型”的座右铭。
OK,所以一个更好的问题,那么可能是这样的:
我怎样才能得到它让我用你的建议:
/地区/ 1 /工资
,并有地图RESTfully:
任务控制器索引,新等,前缀为“payroll_”?
像这样:TasksController#payroll_index或TasksController#payroll_new
映射到即/ regions/1/payroll/new等 – 2010-09-24 00:02:21
这不是它应该如何完成......这完全违背了Rails中通常的设计决策。看起来你想要某种封装,所以你可能要考虑命名空间。阅读关于这一点。 – hurikhan77 2010-09-26 21:21:36
- 1. IIS7网站资源管理
- 2. 新网站的语义网络资源?
- 3. 测试非资源行动on Rails的
- 4. Firebase托管网站可否包含非https资源?
- 5. Rails非标准资源路径
- 6. Rails的基本信息:这里是我的安装,来源,API,资源网站
- 7. 打开网站时的资源
- 8. ASP.NET网站中的Web资源
- 9. Android的字符串资源网站无法正常工作
- 10. 系统资源的
- 11. 我的网站从另一个网站加载资源
- 12. Rails中正确的资源顺序routes.rb
- 13. 网络资源加载时间统计
- 14. Rails 3.0中的活动资源,嵌套的资源与非标准ID
- 15. Rails的RESTful资源
- 16. htaccess:重写 - 但保持网站资源?
- 17. 移动网站与codeigniter共享资源
- 18. Optaplanner - 网站资源不存在
- 19. 移动网站开发资源
- 20. 多语言网站与全球资源
- 21. 翻译php网站,而不extrernalizing资源
- 22. Rails - 资源组
- 23. Rails:命名空间资源和非命名空间资源之间的冲突
- 24. 混合资源(REST)和非资源
- 25. 镆铘非www资源 - > WWW资源
- 26. 非资源筑巢
- 27. 非资源死锁?
- 28. Rails资源路径
- 29. rails 3资源“无”
- 30. Rails根资源JSON
请参阅?我知道有人可以帮我解决这个问题! :D这正是我正在寻找的。谢谢! – 2010-09-23 23:26:15
P.S. - 是的,我需要重新阅读该文档。有很多我需要重新阅读。只需要完成这个当前的项目。 (再次感谢) – 2010-09-23 23:27:13
哦,等等...如果我希望URL中包含“工资单”,但是要使用任务控制器处理工资单请求,我该怎么办? – 2010-09-23 23:28:57