Coding Guidelines: Instance variables in views

Matt Wagner matt.wagner at redhat.com
Fri Aug 17 13:39:36 UTC 2012


On Fri, Aug 17, 2012 at 10:52:46AM +0200, Jirka Tomasek wrote:
> 
> I don't like the sentence "Don't use it for passing variables to
> view. Never." which is actually one of the first things that any
> Rails book teaches you. 

Yes, that was the main source of my confusion.

> I agree that we should try to reduce using
> instance variables in controllers where possible to avoid cluttering
> controllers with them.

As someone mentioned in another reply here, there are uses where you
really need them -- e.g., before_filters. Of course we should be
careful to not use instance variables where there's no need for them;
sometimes we'll mistakenly use an instance variable just within the
scope of a method, for example.

> The blog post you sent points out the reusability of partials so
> passing the variables as locals helps avoid requiring use of eg.
> @post in all partials instances. Imho it depends on the desired use
> of the partial.
> 
> We have discussed with Imre the alternative way to pass variables
> from controller's action to view. It can be done similar way as with
> partials:
> 
>   ...someactioncode...
>   render :action => :index, :locals => {:post => post}
> end
> 
> 
> but I have never seen this used anywhere in controller and I assume
> this is not the "Rails way".

Yes, this feels pretty weird to me. That whole line should be
unnecessary -- we're overriding the "Rails magic" to explicitly perform
the default behavior, except referencing the variable as a local one. If
anything, this seems _more_ error-prone to me than relying on instance
variables.

-- Matt



More information about the aeolus-devel mailing list