Simple refactor?

22 views
Skip to first unread message

Dave Castellano

unread,
Feb 17, 2013, 6:43:42 PM2/17/13
to rubyonra...@googlegroups.com
Hi,

As I continue learning to program, I am finding things I think can
probably be done in a better way. The following code seems like
something
programmers must run into all the time and I am wondering if there is a
better way to write the code in this situation (it seems very repetitive
to me). I'm having fun and trying to get better at this....

if !session[:subject_id].blank?
@subject_id = session[:subject_id]
end

if !session[:book_id].blank?
@book_id = session[:book_id]
end

if !session[:chapter_id].blank?
@chapter_id = session[:chapter_id]
end

if !session[:section_id].blank?
@section_id = session[:section_id]
end

if !session[:subsection_id].blank?
@subsection_id = session[:subsection_id]
end

if !session[:minisection_id].blank?
@minisection_id = session[:minisection_id]
end

Is there a better way??

Thanks...

Dave

--
Posted via http://www.ruby-forum.com/.

Rogerio Medeiros

unread,
Feb 17, 2013, 8:16:50 PM2/17/13
to rubyonra...@googlegroups.com
try

[:subject_id, :book_id, :chapter_id, :section_id, :subsection_id, :minisection_id].each do |k|
 "@#{k.to_s}" = session[k] if session[k].present?
 end    

2013/2/17 Dave Castellano <li...@ruby-forum.com>
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.





--
att,

Rogerio

A complicação se descomplica na mesma proporção que fazemos os nós se desatarem ao tecer o conhecimento do saber.

Rogerio Medeiros

unread,
Feb 17, 2013, 8:20:20 PM2/17/13
to rubyonra...@googlegroups.com
or
@subject_id = session[:subject_id] if session[:subject_id].present?   
@book_id = session[:book_id] if session[:book_id].present?   
@chapter_id = session[:chapter_id] if session[:chapter_id].present?   
@section_id = session[:section_id] if session[:section_id].present?   
@subsection_id = session[:subsection_id] if session[:subsection_id].present?   
@minisection_id = session[:minisection_id] if session[:minisection_id].present?   

2013/2/17 Rogerio Medeiros <arg...@gmail.com>

tamouse mailing lists

unread,
Feb 17, 2013, 11:02:11 PM2/17/13
to rubyonra...@googlegroups.com
On Sun, Feb 17, 2013 at 7:16 PM, Rogerio Medeiros <arg...@gmail.com> wrote:

> [:subject_id, :book_id, :chapter_id, :section_id, :subsection_id,
> :minisection_id].each do |k|
> "@#{k.to_s}" = session[k] if session[k].present?

Sorry -- really not sure what's supposed to be happening here --
you're assigning to a string literal?

botp

unread,
Feb 18, 2013, 12:34:56 AM2/18/13
to rubyonra...@googlegroups.com

--

apparently, he meant...

  instance_variable_set("@#{k.to_s}", session[k]) if session[k].present?

kind regards -botp

Dave Castellano

unread,
Feb 18, 2013, 12:34:02 PM2/18/13
to rubyonra...@googlegroups.com
botp wrote in post #1097518:
Thank you.. this different approach taught me alot.

and...@benjamin.dk

unread,
Feb 20, 2013, 8:56:18 AM2/20/13
to rubyonra...@googlegroups.com
def set_instance_var_with_session_value variable
    instance_variable_set("@#{variable.to_s}", session[variable]) if session[variable].present?
end

and you will have a general method for this, for any symbol.

for example call set_instance_var_with_session_value(:subject_id)

it should work!
Reply all
Reply to author
Forward
0 new messages