SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    SitePoint Zealot
    Join Date
    Jul 2004
    Location
    NC
    Posts
    194
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Restful 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 perator_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?

  2. #2
    SitePoint Zealot
    Join Date
    Jul 2004
    Location
    NC
    Posts
    194
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Update:

    I realized I should also attempt to go w/ a operations_controller instead of the operator_profile_controller. So I did that and I now have in routes:

    resources perations

    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 this fails as well:

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

    My model is operator.rb

    Here's a dump of all my operator related routes:

    Code:
          operator_profile_index GET    /operator_profile(.:format)                     {:action=>"index", :controller=>"operator_profile"}
                                 POST   /operator_profile(.:format)                     {:action=>"create", :controller=>"operator_profile"}
            new_operator_profile GET    /operator_profile/new(.:format)                 {:action=>"new", :controller=>"operator_profile"}
           edit_operator_profile GET    /operator_profile/:id/edit(.:format)            {:action=>"edit", :controller=>"operator_profile"}
                operator_profile GET    /operator_profile/:id(.:format)                 {:action=>"show", :controller=>"operator_profile"}
                                 PUT    /operator_profile/:id(.:format)                 {:action=>"update", :controller=>"operator_profile"}
                                 DELETE /operator_profile/:id(.:format)                 {:action=>"destroy", :controller=>"operator_profile"}
    
    
                       operators GET    /operators(.:format)                            {:action=>"index", :controller=>"operators"}
                                 POST   /operators(.:format)                            {:action=>"create", :controller=>"operators"}
                    new_operator GET    /operators/new(.:format)                        {:action=>"new", :controller=>"operators"}
                   edit_operator GET    /operators/:id/edit(.:format)                   {:action=>"edit", :controller=>"operators"}
                        operator GET    /operators/:id(.:format)                        {:action=>"show", :controller=>"operators"}
                                 PUT    /operators/:id(.:format)                        {:action=>"update", :controller=>"operators"}
                                 DELETE /operators/:id(.:format)                        {:action=>"destroy", :controller=>"operators"}

  3. #3
    SitePoint Zealot
    Join Date
    Sep 2010
    Location
    Brighton, UK
    Posts
    136
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You don't need to use the restful routes that resources spits out. You're totally free to define your own routes using match if you would like to.

    However, that said, there's generally a way to work it so that most of the things you might like to do fit into the REST/CRUD architecture. Sticking to the conventions wherever possible will make your code cleaner and more maintainable.

    With regards to your specific problem, without seeing your whole routing file it's hard to say, but do consider consider using the named route:

    Code:
    <%= link_to('Profile', edit_operator_path) %>


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •