2013-03-30 220 views
0

我在生成对象的url时遇到问题。Rails路由从对象生成路径

我已经在我的路线文件下面的代码:

match '(*path)/:name' => 'pages#show'

其引导到包含我的Page控制器:

def show 
    if params[:path] and params[:name] 
     @page = Page.where(:path => params[:path], :title => params[:name]).first 
    elsif params[:name] 
     @page = Page.where(:path => "", :title => params[:name]).first 
    end 
end 

所以在localhost:3000/food/的情况下会发现页面,:path => "", :title => 'food'

localhost:3000/food/pizza会找到页面wh ERE :path => "food/", :title => 'pizza'


的问题是试图获得从A Page对象生成的URL。 所以link_to(@page.title, @page)回报:

undefined method 'page_path'

如何获得路线反向运作将生成一个URL形成一个对象?

回答

2

您需要退回到“旧式”的link_to:

link_to @page.title, :controller => "pages", :action => "show", :path => @page.path, :name => @page.title %> 

看:下例http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

此外,检查出http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default看到,如果你真的想下去那条道路与你的路线

+0

谢谢,这个工程很好 - 它打破了当路径=“”,但一个if子句删除:路径哈希修复。 –