0

我无法从对象生成 url。

我的路由文件中有以下代码:

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'


问题是尝试获取从 aPage对象生成的 url。所以link_to(@page.title, @page)返回:

undefined method 'page_path'

如何让路由反向工作以从对象生成 url?

4

1 回答 1

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下的示例

Also, check out http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default to see if you realy want to go down that road with your routes

于 2013-03-30T07:59:30.317 回答