I have the following associations: Entity has_one :client_role ClientRole belongs_to :entity There should be two ways to add a client role, one where the entity exists and one where the entity does not. In the case where the entity does not exist I have wired the client controller to initialize an entity and an entity.client, populate both from client/new, and add both via client/create. This works. Here is my problem. The client/edit method can logically be reached either from clients/index (client role exists) or from entities/index (client role may or may not exist). However, the :id passed via params in each case refers to a different model, client and entity respectively. Ideally, when calling from entities/index where no client role exists I should call new_client_path. However, new in this sense implies an existing entity, something that I cannot pass via new_client_path and which would not be understood by clients_controller.new as written in any case. Basically, what I must do is detect what model the :id passed belongs too in edit and set up the necessary objects dependent upon that determination. Or, I have to call a method so that this determination is already satisfied. I cannot simply find against both models inside the controller and see which one fails since it is possible that the edit call is for an existing client role. Further, when a new client role is required the entity id: passed might refer to an entirely different client role which then would be returned in error. Is this a case where I need a separate controller and special entry in the routes file to handle this need? map.resources :clients map.resources :entities do |entity| entity.resources :client, :controller => ?, :method => edit/new? end Thanks in advance for any assistance offered. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
James Byrne wrote:> I have the following associations: > > Entity > has_one :client_role > > ClientRole > belongs_to :entity > >I have this in my config/routes map.resources :clients do |client| # A client role has only one entity. client.resource :entity end map.resources :entities do |entity| # An entity can only have one client role entity.resource :client entity.resources :locations # And only one vendor role entity.resource :vendor end And rake routes gives me this: ... new_entity_client GET /entities/:entity_id/client/new {:action=>"new", :controller=>"clients"} formatted_new_entity_client GET /entities/:entity_id/client/new.:format {:action=>"new", :controller=>"clients"} edit_entity_client GET /entities/:entity_id/client/edit {:action=>"edit", :controller=>"clients"} formatted_edit_entity_client GET /entities/:entity_id/client/edit.:format {:action=>"edit", :controller=>"clients"} entity_client GET /entities/:entity_id/client {:action=>"show", :controller=>"clients"} formatted_entity_client GET /entities/:entity_id/client.:format {:action=>"show", :controller=>"clients"} PUT /entities/:entity_id/client {:action=>"update", :controller=>"clients"} PUT /entities/:entity_id/client.:format {:action=>"update", :controller=>"clients"} DELETE /entities/:entity_id/client {:action=>"destroy", :controller=>"clients"} DELETE /entities/:entity_id/client.:format {:action=>"destroy", :controller=>"clients"} But if I write this in views/entities/index ... 33 <%- if entity.client.nil? -%> 34 <%= link_to ''Add Client Role'', new_entity_client(entity) -%> 36 Then I see this: NoMethodError in Entities#index Showing entities/index.html.erb where line #34 raised: undefined method `new_entity_client'' for #<ActionView::Base:0xb793f9d8> app/views/entities/index.html.erb:34:in `_run_erb_47app47views47entities47index46html46erb'' app/views/entities/index.html.erb:11:in `each'' app/views/entities/index.html.erb:11:in `_run_erb_47app47views47entities47index46html46erb'' app/controllers/entities_controller.rb:13:in `index'' and params contains nil. I am somewhat confused at this point. Rakes routes shows that new_entity_client is defined and Rails says that it is not. Can anyone point me in the right direction? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---