我有一个没有任何相关型号的控制器。该控制器将跨越各种模型的一些信息。我在那里有很多动作,它们在页面上定义了某些视图。为这个控制器组织路线的最佳方法是什么?
我想要的是/ dashboard / something指向仪表板控制器中的任何操作。不是新的/编辑的动作,而是任意的(showstats等)。
通过反复试验我做了类似的事情:
map.dashboard 'dashboard/:action', :controller => 'dashboard', :action => :action
现在可以使用帮助程序访问这些URL:
dashboard_url('actionname')
这个approch似乎工作正常,但这是要走的路吗?我不太清楚,如何生成辅助方法名称。如何生成与基本控制器“action_controller_url”中相同的帮助程序名称?这将更通用,并使代码更加一致。
提前致谢。
答案 0 :(得分:5)
您无需在路线中指定:action => :action
键,这已经为您完成了。除此之外,你如何做到这一点很好。
您也可以将其指定为符号:dashboard_url(:actionname)
,但您已经知道;)
答案 1 :(得分:2)
如果您想要所有仪表板操作的辅助方法,则应使用命名路径指定它们,例如:
map.example_dashboard 'dashboard/example', :controller => 'dashboard', :action => 'example'
map.another_dashboard 'dashboard/another', :controller => 'dashboard', :action => 'another'
然后rails会为每个命名路由生成一个_url和一个_path帮助器。我更喜欢你的方法,它更灵活,更简单。
答案 2 :(得分:0)
如何生成相同的帮助名称 在基本控制器中 “action_controller_url”?
map.action_controller(
'action_controller',
:controller => 'controller',
:action => 'action',
:conditions => { :method => :get } # You can restrict the HTTP reqs allowed
)