Re[Rails] stful routing seems excessive at times - I want to simplify

I'm still trying to get used to REST concepts and forms

I have a very simple controller that updates user profile data. I have this link that takes me to the controller:

<%= link_to('Profile', :controller => "operator_profile", :action => "edit") %>

I then want to simply display the operator's data like this:

def edit   @operator = Operator.find(current_operator.id) end

and I want a form that posts to a update method in operator_profile. in my routes I have

resources :operator_profile

I feel like I'm completely locked into the 7 base methods of REST and everything else throws routing errors

I couldn't even get the update method to work.

Can this be simplified?

Your example shows you attempting to use edit and update, which are two of the standard routes, though in routes.rb you appear to be usin :operator_profile but that should be plural :operator_profiles.

I am not sure exactly what you want to do, but if you just want to say that you do not need the other routes then use resources :operator_profiles, :only => [:edit, :update]

To see which routes you have defined then use rake routes

If you have not already done so then have a good look at the Rails Guide on routing. It will explain the above and much more.

Colin

Thanks for your help. I realized before I saw your reply that I should have made a operations_controller instead of the operator_profile_controller.
So I did that and I now have:

resources :operations in routes

and in operations controller I have all 7 rest methods.

And now I'm getting this:

No route matches {:controller=>"operators", :action=>"edit"}

because of this link in application.html.erb:

<%= link_to('Profile', :controller => "operators", :action => "edit") %>

and when I do a rake routes - the only methods that are listed for operators are:

operators GET /operators(.:format)
{:action=>"index", :controller=>"operators"}                POST /operators(.:format)
{:action=>"create", :controller=>"operators"}

My model is operator.rb

clem_c_rock wrote:

Please don't top post, it makes it difficult to follow the thread. Insert your reply at appropriate points in previous message.

Thanks for your help. I realized before I saw your reply that I should have made a operations_controller instead of the operator_profile_controller. So I did that and I now have:

resources :operations in routes

Did you restart the server after changing routes.rb?

and in operations controller I have all 7 rest methods.

And now I'm getting this:

No route matches {:controller=>"operators", :action=>"edit"}

because of this link in application.html.erb:

<%= link_to('Profile', :controller => "operators", :action => "edit") %>

What have you got in routes.rb for operators?

Colin

Thanks for your help. I realized before I saw your reply that I should have

made a operations_controller instead of the operator_profile_controller.

So I did that and I now have:

resources :operations in routes

and in operations controller I have all 7 rest methods.

And now I’m getting this:

No route matches {:controller=>“operators”, :action=>“edit”}

because of this link in application.html.erb:

<%= link_to(‘Profile’, :controller => “operators”, :action => “edit”) %>

and when I do a rake routes - the only methods that are listed for operators

are:

operators GET /operators(.:format)

{:action=>“index”, :controller=>“operators”}

           POST   /operators(.:format)

{:action=>“create”, :controller=>“operators”}

i bet you have something like

resources :operators, :only => [:index, :create]

in your routes file. Since you’re trying to go the the edit action of

your operators controller, you need to add the edit action to your routes.