Ruby on rails路径和路由

时间:2010-01-11 22:35:49

标签: ruby-on-rails

我正试图掌握基本的Rails路由。 我有一个名为页面的模型,我用脚手架生成。 我添加了一个名为addchild的方法,我想通过

访问它
'pages/addchild/:id'

到目前为止一切顺利。但是,我想设置一个指向此方法的链接,如下所示:

<%= link_to 'Add child page', addchild_page_path(page) %>

将当前页面的ID作为参数传递。

当我加载索引视图(链接所在的位置)时,我收到以下消息:

undefined local variable or method `addchild_page_path' for    #<ActionView::Base:0xb67797d0>

我是否误解了path / link_to方法的工作原理?

我的路线文件如下所示:

  map.resources :pages
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'

非常感谢任何建议。

感谢。

1 个答案:

答案 0 :(得分:2)

您需要添加一个路径才能使用指定的路径方法。

由于您提到您使用了脚手架,您可能将路径设置为资源,因此您需要做的就是添加方法:

map.resources :pages, :member => {:addchild => :get}

会给你一个addchild_pages_path(实际创建的路径看起来像/pages/:id/addchild

然后你就像这样使用它:addchild_pages_path page,不要直接调用id方法,因为它没有足够的资源(你不会在页面类中使用to_param,你可能想稍后做。)

如果你真的希望网址显示为/pages/addchild/:id(我不推荐),你可以添加

map.addchild_page "/pages/addchild/:id", :controller => :pages, :method => :addchild

在routes.rb中的map.resources :pages行之前,然后使用上面的路径方法。