Forum: Ruby on Rails Two root URLs

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9ceeb190da20a2917644da86dbcd2322?d=identicon&s=25 Tim Conner (plump)
on 2008-11-28 12:45
Is it possible to have to have the root url configured so that the user
is directed to a different page depending if they are logged in or not
whilst also keeping the url the same?

E.g
If the user is logged in, I want www.example.com to show the Users#show
action
If the user is not logged in, I want www.example.com to the the
Sessions#new action

At the moment I have the root url configured to be the Users#show action
and I have a 'login_required' before filter on the Users#show action
which redirects the user to Sessions#new if the user is not logged in.
This works well but the URL is changed when the user is directed and so
all nonlogged in users see www.example.com/login as the url when they
come to the site.  I want everybody to see www.example.com regardless of
whether they are logged in or not.

routes.rb
  map.root :controller => 'users', :action => 'show'
  map.login '/login', :controller => 'sessions', :action => 'new'


Thanks
Ffd203cd1b3456617242464325ffb932?d=identicon&s=25 Sadeesh Viswanthan (sadathiru)
on 2008-11-28 13:48
(Received via mailing list)
Hi Tim,
     Your question was interesting.


> Is it possible to have to have the root url configured so that the user
> is directed to a different page depending if they are logged in or not
> whilst also keeping the url the same?
>
> E.g
> If the user is logged in, I wantwww.example.comto show the Users#show
> action
> If the user is not logged in, I wantwww.example.comto the the
> Sessions#new action
>



No, its not possible as far I know.




>   map.login '/login', :controller => 'sessions', :action => 'new'
>
> Thanks
> --
> Posted viahttp://www.ruby-forum.com/.

All files under config directory could not access any methods or
variables like 'session'. And it is must to have a different urls for
different actions rendered in the browser.

Still you want to do that?

Use same controller and same action but render a partial based on your
stuff needed.



Thanks,
Sadeesh Kumar Viswanathan.
Af2ce6689213fdb78913a9662b18da6b?d=identicon&s=25 Rick (Guest)
on 2008-11-28 19:06
(Received via mailing list)
Tim,

You might consider a common view with two different partials - one for
each case.

routes.rb:

map.index '/',
  :controller => 'pages',
  :action => 'welcome',
  :id => '1-welcome-page'

controllers/pages_controller.rb:

def welcome
    @page = Page.find(params[:id])

    respond_to do |format|
      format.html # welcome.html.erb
      format.xml { render :xml => @page }
    end
  end

views/pages/welcome.html.erb

<p>
  <b>Title:</b>
  <%=h @page.title %>
</p>

<% if logged_in? %>
<%= render :partial => 'layouts/welcome_back' %>
<% else %>
<%= render :partial => 'layouts/please_login' %>
<% end %>

Rick
Rick

On Nov 28, 1:45 am, Tim Conner <rails-mailing-l...@andreas-s.net>
This topic is locked and can not be replied to.