marcgg
marcgg

Reputation: 66436

How to define a custom path in rails?

I have a User model. If I do:

def my_action
  @user = User.new
end

then

  <% form_for(@user) do |f| %>

I get

undefined method `users_path' for #<ActionView::Base:0x1b4b878>

Which make sense because I haven't mapped it going map.resources :users... but I don't want to do it this way because I don't need all the resources.

How can I just define this user_path method in my routes?

Upvotes: 11

Views: 21488

Answers (3)

ironic
ironic

Reputation: 8939

Since I came here looking for a way to create helpers in routes.rb, here is the way to do it:

get '/users/:id/' =>'users#show', :as => :user

Upvotes: 8

Andy Gaskell
Andy Gaskell

Reputation: 31761

You can also customize restful routes. For example in my application only the index and show actions are appropriate for certain controllers. In my routes.rb file I have some routes like this:

map.resources :announcements, :only => [:index, :show]

You can also use :except if that's more appropriate.

Upvotes: 6

You can map custom routes in your routes.rb file like this...

map.users '/users', :controller => 'user', :action => 'index'

This gives you the users_path helper you're looking for.

Upvotes: 3

Related Questions