基本Ruby on Rails关于路由的问题

时间:2010-03-24 08:02:08

标签: ruby-on-rails ruby routing url-routing

我有一个没有任何相关型号的控制器。该控制器将跨越各种模型的一些信息。我在那里有很多动作,它们在页面上定义了某些视图。为这个控制器组织路线的最佳方法是什么?

我想要的是/ dashboard / something指向仪表板控制器中的任何操作。不是新的/编辑的动作,而是任意的(showstats等)。

通过反复试验我做了类似的事情:

map.dashboard 'dashboard/:action', :controller => 'dashboard', :action => :action

现在可以使用帮助程序访问这些URL:

dashboard_url('actionname')

这个approch似乎工作正常,但这是要走的路吗?我不太清楚,如何生成辅助方法名称。如何生成与基本控制器“action_controller_url”中相同的帮助程序名称?这将更通用,并使代码更加一致。

提前致谢。

3 个答案:

答案 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
  )