Rn2dy
Rn2dy

Reputation: 4190

In rails, does it matter to use local variable or instance variable in action methods

I have a lot action methods which do not need to create instance variable for rendering the view, because these method will only redirect to other actions from other controllers. I am wondering: is it a good habit to always create instance variable for the sake of following the conventions of Rails, or there is no such thing. My intuition is that local variable reduces memory costs, but the code does not look pretty.

Upvotes: 9

Views: 3058

Answers (3)

Dave Newton
Dave Newton

Reputation: 160191

It's not a convention to create instance variables if they're not being sent to the view.

  • Variables should have the narrowest scope possible.
  • They should be locals if they're not passed to the view.
  • Use a presenter if you have a "lot" of view data (instead of a ton of instance vars).

Instance variables may be used if multiple methods act on them before the view, even if they're not used in the view, but this makes the code much harder to reason about and test in isolation.

If you find yourself using instance variables to hold intermediate calculations you probably need to rethink your flow and/or design.

Upvotes: 12

nkm
nkm

Reputation: 5914

Mostly we need to use instance variable in following cases,

  1. When we need to access the variable from view
  2. If we are calling a method from the action, instead of returning a value, we can directly update the variable from the called method.

Why should we use instance variable if our job can be done with a local variable.

Upvotes: 8

mu is too short
mu is too short

Reputation: 434665

The only reason you use instance variables in controllers is get things into the view without having to explicitly pass a pile of state around.

If you don't have any state, then you don't have any instance variables so there's no reason to use them.

Upvotes: 5

Related Questions