2010-01-11 199 views
0

我想要获得基本的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> 

我有没有误解的路径/的link_to方法是如何工作的?

我的路线文件看起来像这样:

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

任何意见将不胜感激。

谢谢。

回答

2

您需要为其添加路由才能使用指定的路径方法。

既然你提到你使用的脚手架,你可能有路线设置作为一种资源,因此,所有你需要做的是添加方法:

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

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

然后使用它是这样的:addchild_pages_path page,不直接调用该方法id因为它不是足智多谋(你会不会在页面类,你可能想要做的使用to_param以后)

如果你真的想要的网址,以显示为/pages/addchild/:id(我不推荐),你可以在你的routes.rb中的map.resources :pages行之前添加

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

,然后使用路径方法如上。

+0

谢谢。 是的,我想要url格式的默认方式,我只是输入错误。 – Dan 2010-01-11 22:47:29