开发者

make pretty url with routes.rb

I would like to do something to this effect, I believe:

map.connect 'show/:company_name/:id',
            :controller => 'companies',
            :action     => 'show'

Basically, each time the show action is called, I would like it to take the company_name param and place it into the url as such (show/:company_name/:id)

However, it seems I am using old (rails 2.x routing api) and cannot use map.connect without getting开发者_运维问答 an error. How can I upgrade this?

Is there some way to do this with "match"?

Thanks!

===================

This is the error I see when I try to use map.connect:

undefined local variable or method `map' for #<ActionDispatch::Routing::Mapper:0x103757458>


I think your routes lack a "/" symbol in the first line. Try this:

match '/show/:company_name/:id' => 'companies#show'

You can check your routes path with command rake routes.

--

Besides, the show action is the default RESTful method in Rails. I'll suggest you change a equivalent word, and reserve "show" action for future or other situation.

In Rails convention, you can write resources :companies, and the path will be /companies/:id using show action.

Some adjustment, in app/models/company.rb

def to_param
  self.name
end

So your url will look like http://yourdoamin.com/companies/37signals.

In app/controllers/companies_controller.rb

@company = Company.find_by_name(params[:id])


If I'm understanding your goal, try

match 'companies/show/:company_name/:id' => 'companies#show'
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜