Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

This project is archived and is in readonly mode.

render partial :object => nil with instance variable

#924

The following does not work as expected.

Controller:


@profile = Profile.new

View:


render :partial => 'profile', :object => nil

Inside the partial 'profile', the local variable will be given the value of '@profile' and not nil as expected.

Reported by Erik Andrejko · August 28th, 2008 @ 03:09 PM

State: resolved
Milestone: 2.x
Assigned to: josh josh
Importance: none

Activity

  1. Michael Koziarski
  2. josh
    josh
    • State changed from new to resolved

    I agree with you thats its a bit of a quirk, but its not easily fixed without alot of complex nil checking.

    The implicit assignment is rather old anyway. Instead, I am just going to deprecate it. Sorry that it doesn't immediately fix your issue.

    http://github.com/rails/rails/co...

    August 28th, 2008 @ 04:41 PM

  3. Erik Andrejko
    Erik Andrejko

    Thanks for the fix. I was able to avoid this issue by restructuring my application.

    Did you look at the attached patch? It is not that difficult to allow explicit nil assignments. I'm not sure if the implicit assignment of the instance variable should be deprecated or not. Is there any sense of how often this is used?

    August 28th, 2008 @ 07:51 PM

  4. josh
    josh

    I saw the patch. If we wanted to go that route we'd have to add nil overrides to :locals, and :as. I'd really hate to see a big chain of has_key? just because we can't rely on nil.

    Implicit assignment is really old school. Infact, I can't even find it documented anywhere. We now have plenty of options to assign objects to the partial local. So I'm not too worried about the people who used to use it.

    August 29th, 2008 @ 06:28 AM

  5. bingbing