Back to my notorious entity : client relationship.
Entity
 has_one  :client
Client
 belongs_to :entity.
The route:
  map.resources :entities do |entity|
    # An entity can only have one client role
    entity.resource       :client,    :controller =>
''entity_client''
    # An entity can have many locations
    entity.resources      :locations
    # And only one vendor role
    entity.resource       :vendor
  end
Given
the URL = http://localhost:3000/entities/3/client
Naturally enough the default respond_to call to show in
entity_clients_controller.rb expects to find it in views/entity_clients.
Being perverse, I want to display the show.html.erb template in
views/clients.  I tried this code in the controller:
def show
  @client = Entity.find(params[:entity_id]).client
  respond_to do |format|
    format.html { redirect_to ''/clients/show.html.erb'' }
...
But this gives me the error:
Routing Error
No route matches "/clients/show.html.erb" with {:method=>:get}.
I tried modifying routes.rb to this:
  map.resources :entities do |entity|
    # An entity can only have one client role
    entity.resource       :client,
                          :controller => ''entity_client'',
                          :method => ''get'',
                          :path_prefix => ''clients''
but that gives me this error:
Unknown action
No action responded to 3
So, what is it that do I not understand here?
-- 
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
-~----------~----~----~----~------~----~------~--~---
redirect_to ''/clients/show.html.erb'' redirect to a html.erb file? you should redirect to an action/controller or use render :template => ''/clients/show.html.erb'' -- 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 -~----------~----~----~----~------~----~------~--~---
Thorsten Mueller wrote:> redirect_to ''/clients/show.html.erb'' > > redirect to a html.erb file? > you should redirect to an action/controller > > > or use render :template => ''/clients/show.html.erb''Thanks, that is exactly what I ended up doing. def show @client = Entity.find(params[:entity_id]).client respond_to do |format| format.html { render :template => ''clients/show'' } -- 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 -~----------~----~----~----~------~----~------~--~---
If you just want to show it, use render :template, don''t use redirect_to. redirect_to will use the routes again, therefore you would need to specify the controller and action (ie you should get url_for to render it for you). Julian. Learn Ruby on Rails! Check out the FREE VIDS (for a limited time) VIDEO #3 out NOW! http://sensei.zenunit.com/ On 10/04/2008, at 3:30 AM, James Byrne wrote:> > Back to my notorious entity : client relationship. > > Entity > has_one :client > > Client > belongs_to :entity. > > The route: > > map.resources :entities do |entity| > # An entity can only have one client role > entity.resource :client, :controller => ''entity_client'' > # An entity can have many locations > entity.resources :locations > # And only one vendor role > entity.resource :vendor > end > > > Given > > the URL = http://localhost:3000/entities/3/client > > Naturally enough the default respond_to call to show in > entity_clients_controller.rb expects to find it in views/ > entity_clients. > Being perverse, I want to display the show.html.erb template in > views/clients. I tried this code in the controller: > > def show > @client = Entity.find(params[:entity_id]).client > respond_to do |format| > format.html { redirect_to ''/clients/show.html.erb'' } > ... > > But this gives me the error: > > Routing Error > > No route matches "/clients/show.html.erb" with {:method=>:get}. > > I tried modifying routes.rb to this: > > > map.resources :entities do |entity| > # An entity can only have one client role > entity.resource :client, > :controller => ''entity_client'', > :method => ''get'', > :path_prefix => ''clients'' > > but that gives me this error: > > Unknown action > > No action responded to 3 > > > So, what is it that do I not understand here? > -- > 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 -~----------~----~----~----~------~----~------~--~---