我想为此做点什么,我相信:
map.connect 'show/:company_name/:id',
:controller => 'companies',
:action => 'show'
基本上,每次调用show动作时,我都希望它采用company_name参数并将其放入url中(show /:company_name /:id)
但是,似乎我使用旧的(rails 2.x路由api)并且无法使用map.connect而不会出现错误。我该如何升级?
有没有办法用“匹配”来做到这一点?
谢谢!
===================
这是我在尝试使用map.connect时看到的错误:
undefined local variable or method `map' for #<ActionDispatch::Routing::Mapper:0x103757458>
答案 0 :(得分:4)
我认为你的路线在第一行没有“/”符号。 试试这个:
match '/show/:company_name/:id' => 'companies#show'
您可以使用命令rake routes
检查路线路径。
-
此外,show动作是Rails中的默认RESTful方法。我建议你更改一个等效的单词,并为将来或其他情况保留“show”动作。
在Rails惯例中,您可以使用show action编写resources :companies
,路径为/companies/:id
。
在app / models / company.rb中进行一些调整
def to_param
self.name
end
因此,您的网址将显示为http://yourdoamin.com/companies/37signals
。
在app / controllers / companies_controller.rb
中@company = Company.find_by_name(params[:id])
答案 1 :(得分:0)
如果我了解你的目标,请尝试
match 'companies/show/:company_name/:id' => 'companies#show'