Forum: Ruby on Rails Simple refactor?

Posted by Dave Castellano (dcastellano1)
on 2013-02-18 00:43
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 by Rogerio Medeiros (Guest)
on 2013-02-18 02:18
(Received via mailing list)
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 <lists@ruby-forum.com>

>         @subject_id = session[:subject_id]
>     if !session[:section_id].blank?
>
> 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-talk+unsubscribe@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>


--
att,

Rogerio

A complicao se descomplica na mesma proporo que fazemos os ns se
desatarem ao tecer o conhecimento do saber.
Posted by Rogerio Medeiros (Guest)
on 2013-02-18 02:21
(Received via mailing list)
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 <argerim@gmail.com>

>>
>>
>>     end
>>
>> To unsubscribe from this group and stop receiving emails from it, send an
>
> Rogerio
>
> A complicao se descomplica na mesma proporo que fazemos os ns se
> desatarem ao tecer o conhecimento do saber.
>



--
att,

Rogerio

A complicao se descomplica na mesma proporo que fazemos os ns se
desatarem ao tecer o conhecimento do saber.
Posted by tamouse mailing lists (Guest)
on 2013-02-18 05:03
(Received via mailing list)
On Sun, Feb 17, 2013 at 7:16 PM, Rogerio Medeiros <argerim@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?
Posted by botp (Guest)
on 2013-02-18 06:36
(Received via mailing list)
On Mon, Feb 18, 2013 at 12:02 PM, tamouse mailing lists <
tamouse.lists@gmail.com> wrote:

> --
>

apparently, he meant...

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

kind regards -botp
Posted by Dave Castellano (dcastellano1)
on 2013-02-18 18:34
botp wrote in post #1097518:
> On Mon, Feb 18, 2013 at 12:02 PM, tamouse mailing lists <
> tamouse.lists@gmail.com> wrote:
>
>> --
>>
>
> apparently, he meant...
>
>   instance_variable_set("@#{k.to_s}", session[k]) if session[k].present?
>
> kind regards -botp


Thank you..  this different approach taught me alot.

Dave
Posted by unknown (Guest)
on 2013-02-20 14:57
(Received via mailing list)
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!
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.