Paul - Just an update.  Although changing the partial as you suggested
allowed the "home" page to render properly, I think it also kept
Authlogic from working properly.

When the partial contains this:
<% form_for UserSession.new :url => user_session_path do |f| %>

I get nothing from Authlogic when I hit the Login button with no
credentials entered.

But when I revert to its original form:

<% form_for @user_session, :url => user_session_path do |f| %>

Authlogic gives me the following response:

****************************
1 error prohibited this user session from being saved

There were problems with the following fields:

    * You did not provide any details for authentication.

****************************

So here is how I was able to get it working:

- Changed "home" controller as follows:

def index
    @user_session = UserSession.new
end

- Changed view for "home" controller (i.e. - index.html.erb) as
follows:

<%= render :partial => "user_sessions/user_session", :locals =>
{ :user_session => @user_session } %>

This seems to work.

Thanks for pointing me in the right direction.

On Sep 25, 11:11 am, bui <bui...@gmail.com> wrote:
> pabcas - Thanks for responding to my question.  I really appreciate
> the help.  Changing my partial to use "UserSession.new" seemed to
> work.  The "home" page was able to render properly.
>
> I checked the user_sessions_controller.rb file and I have this method
> defined.
>
> def new
>     @user_session = UserSession.new
> end
>
> Did you mean the home_controller.rb file?
>
> On Sep 25, 1:05 am, pabcas <p...@rslw.com> wrote:
>
> > Try <% form_for UserSession.new ... if you want the form to work
> > anywhere, or make sure that @user_session is set in the controller,
> > eg. @user_session = UserSession.new
>
> > Paul
>
> > On Sep 25, 6:54 am, bui <bui...@gmail.com> wrote:
>
> > > The controller is the "home" controller and looks like this (very
> > > basic):
>
> > > class HomeController < ApplicationController
> > >   def index
> > >   end
> > > end
>
> > > The view for the home controller is is just a basic home page and I
> > > just wanted to render a login partial there since I'm also planning to
> > > use it elsewhere in the app.
>
> > > I assumed that there is no user_session, since a user is not logged in
> > > at this point.  So, I didn't think I would need to pass it anything.
> > > I can hithttp://mysite/lgoinwithoutpassingany instance variables
> > > and it shows the partial properly.
>
> > > Here's a trace:
>
> > > Showing app/views/user_sessions/_user_session.html.erb where line #1
> > > raised:
>
> > > Called id for nil, which would mistakenly be 4 -- if you really wanted
> > > the id of nil, use object_id
>
> > > Extracted source (around line #1):
>
> > > 1: <% form_for @user_session, :url => user_session_path do |f| %>
> > > 2:   <%= f.error_messages %>
> > > 3:   <%= f.label :email %><br />
> > > 4:   <%= f.text_field :email %><br />
>
> > > Trace of template inclusion: app/views/home/index.html.erb
>
> > > RAILS_ROOT: c:/wwwroot/ror/blostm
> > > Application Trace | Framework Trace | Full Trace
>
> > > C:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
> > > record_identifier.rb:76:in `dom_id'
> > > C:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_view/
> > > helpers/record_identification_helper.rb:16:in `dom_id'
> > > C:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_view/
> > > helpers/form_helper.rb:293:in `apply_form_for_options!'
> > > C:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_view/
> > > helpers/form_helper.rb:277:in `form_for'
> > > c:/wwwroot/ror/mysite/app/views/user_sessions/_user_session.html.erb:
> > > 1:in
> > > `_run_erb_app47views47user_sessions47_user_session46html46erb_locals_object
> > >  _user_session'
> > > c:/wwwroot/ror/mysite/app/views/home/index.html.erb:4:in
> > > `_run_erb_app47views47home47index46html46erb'
>
> > > By the way, thanks for responding to my post.
>
> > > On Sep 24, 4:01 pm, pharrington <xenogene...@gmail.com> wrote:
>
> > > > On Sep 24, 3:06 pm, bui <bui...@gmail.com> wrote:
>
> > > > > New to Rails.  Using Authlogic for authentication and went through
> > > > > tutorial at github.  Having a bit of a problem getting the login
> > > > > screen to render as a partial from a different view file.
>
> > > > > I have a index.html.erb view file for the "home" controller.
>
> > > > > I tried <%= render :partial => "user_sessions/user_session" %>
>
> > > > > but it fails with this error:
>
> > > > > "Called id for nil, which would mistakenly be 4 -- if you really
> > > > > wanted the id of nil, use object_id"
>
> > > > > user_sessions is the view directory for the login form created through
> > > > > the Authlogic tutorial.  I created a partial called
> > > > > _user_session.html.erb which contains the entire login form and looks
> > > > > like this:
>
> > > > > <% form_for @user_session, :url => user_session_path do |f| %>
> > > > >   <%= f.error_messages %>
> > > > >   <%= f.label :email %><br />
> > > > >   <%= f.text_field :email %><br />
> > > > >   <br />
> > > > >   <%= f.label :password %><br />
> > > > >   <%= f.password_field :password %><br />
> > > > >   <br />
> > > > >   <%= f.check_box :remember_me %><%= f.label :remember_me %><br />
> > > > >   <br />
> > > > >   <%=  image_submit_tag("/images/Login Button.jpg") %>
> > > > > <% end %>
>
> > > > > user_sessions/new.html.erb now looks like this
>
> > > > > <%= render :partial => 'user_session' %>
>
> > > > > And this works:  http://mysite/login (setup through a named route)
> > > > > And this works:  http://mysite/user_sessions/new
>
> > > > > However, trying this <%= render :partial => "user_sessions/
> > > > > user_session" %> in the home/index.html.erb view fails.
>
> > > > > Can anyone help with this?  I seem to be missing something really
> > > > > fundamental here.
>
> > > > > Thanks
>
> > > > A guess, as I don't have the full backtrace and don't know what the
> > > > controller that passes to the view that calls the partial rendering
> > > > does: is the @user_session instance variable nil?
--~--~---------~--~----~------------~-------~--~----~
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@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to