Ruby on Rails Thursday, January 26, 2012

On Jan 26, 2012, at 11:38 AM, Peter Vandenabeele wrote:

> On Thu, Jan 26, 2012 at 3:37 PM, Colin Law <clanlaw@googlemail.com> wrote:
> ...
> To me that looks more like something that should be called in the
> controller and go into an @ variable for use in the view. The general
> rule is setup data in the controller and display it in the view.
>
> TL;DR
> * controller only does "routing/decision" logic (render, error, redirect, ...)
> * views get their rich data from a presenter
>
>
> I feel less confident about this strategy.
>
> I have doubts over this code in the controller that is "pushing/pre-setting" data
> into e.g. a @user instance variable
>
> @user = User.include(:account).include(:address).include(:projects).find(params[:id])
>
> of which a large fraction may remain unused and the specific usage may
> change over time.
>
> Suppose that we initially show a list of all the projects of the user
> in the show view, but later decide to not show that list in the first
> "show" view anymore (it could e.g. be shown later with an AJAX
> request when the user opens a projects tab).
>
> Then we would be always populating the @user with too much data,
> unless we think about removing that from the controller.
>
> I would prefer a method where the view "pulls" (only) the data that it
> needs, when it needs it, from ... (a presenter ??).
>
> A helper (in my opinion) is purely an html/decorator thing (as was
> also the feeling of the OP, If I understood correctly).
>
> Of course, the ActiveRecord::Relation helps to delay the actual SQL
> in certain cases (e.g. in the index view). But it does not remove the
> code complexity and potential inefficiency from the controller.
>
> I start to feel more that the controller does some "routing/decision"
> logic (render, error, redirect, ...), but that it should not really prepare
> the data for later views. The views should "pull" their data from a
> presenter.
>
> Does this make sense? Would it address the initial question from the OP?

Yes and yes. I agree with your analysis of my question, and I'd love to see more elucidation of how a presenter pattern could work in this case.

Thanks,

Walter

>
> Peter
>
> --
> 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@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

--
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@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment