我在生成对象的网址时遇到问题。
我的路线文件中有以下代码:
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
会找到:path => "food/", :title => 'pizza'
问题是尝试获取从Page
对象生成的url。
所以link_to(@page.title, @page)
会返回:
undefined method 'page_path'
如何使路径反向工作以生成对象的URL?
答案 0 :(得分: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,了解您真的是否希望沿着这条路走下去