Darek F. wrote in post #1042021:> This code works but looks ugly.
> How to merge this two actions?
>
> #verifications/index.haml
> - if Ad.unverified_ads.size == 0
> - else
> = link_to "Szybka Weryfikacja",
> fast_verify_info_verification_path(Ad.unverified_ads.last), :method
> => :put
> Ad.unverified_ads.last
The work of loading the last unverified ad should not be performed
directly by the view. It''s not the views responsibility. Besides that,
this line is a direct violation if the Law of Demeter (LoD). While, I
only partially support the concept of LoD, doing this in the view is
really crossing that line.
http://en.wikipedia.org/wiki/Law_of_Demeter
> = link_to "Normal Verify", verify_info_verification_path(ad),
:method
> => :put
>
> #verifications/verify_info.haml
> = link_to "Verify", verify_verification_path(@ad)
> #verifications/fast_verify_info.haml
> = link_to "Weryfikuj",
> fast_verify_verification_path(Ad.unverified_ads.last), :method => :put
> #verification_controller.rb
> def verify_info
> @ad = Ad.find(params[:id])
> end
> def fast_verify_info
> @ad = Ad.find(params[:id])
> end
I don''t understand the purpose of these two methods. They find an ad
and
do nothing else. Seems rather pointless to me. I could be missing
something here.
If you just need have the same add loaded by more than one action method
then use a before filter to load it...
before_filter load_ad
private
def load_ad
@ad = Ad.find(params[:id])
end
See
http://guides.rubyonrails.org/action_controller_overview.html#filters
for more on controller filters.
> def fast_verify
> @ad = Ad.find(params[:id])
> @ad.verify!
> if Ad.unverified_ads.size == 0
> redirect_to verifications_path
> else
> redirect_to
> fast_verify_info_verification_path(Ad.unverified_ads.last)
> end
> end
> def verify
> @ad = Ad.find(params[:id])
> @ad.verify!
> if params[:fast] == true
> redirect_to Ad.unverified_ads.last
> else
> redirect_to verifications_path
> end
> end
Again I see Ad.unverified_ads.last. If this is important enough to keep
restating multiple times then it''s important enough for your Ad model
to
know how to do it.
Ad.last_unverified (This helps resolve the LoD issue).
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.