我正试图掌握基本的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'
非常感谢任何建议。
感谢。
答案 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
行之前,然后使用上面的路径方法。