Ruby on Rails Thursday, January 26, 2012

On 26 January 2012 14:47, Walter Lee Davis <waltd@wdstudio.com> wrote:
>
> On Jan 26, 2012, at 9:37 AM, Colin Law wrote:
>
>> On 26 January 2012 14:26, Walter Lee Davis <waltd@wdstudio.com> wrote:
>>> I have a strong handle on when to use a helper -- at least I think so. A helper may include some logic (not enough to belong in the model) and it presents html as its output. So I have a conceptual problem about this solution that I've built:
>>>
>>> #helpers/people_helper.rb
>>>  def person_roles
>>>    (%W(assistant author collector editor foreword illustrator interviewer introduction narrator notes translator) + Role.group('name').map(&:name)).uniq().sort
>>>  end
>>>
>>> I use the output in a view, as part of a collection_select picker for a string-based attribute. This picker has a JavaScript "combobox" behavior added to it, so the editor can add new roles to the list at whim. But the output is an array. Does this invalidate my use of a helper method? Or am I thinking too much about the label "helper" here?
>>
>> 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.  The
>> method itself could go in the Role model or in a module in lib
>>
>> Colin
>
> I had it in the controller, but I didn't like the look of having to declare an instance variable inside each method that needed this (new and create and edit and update). The helper was there for the asking in each view, so it seemed DRYer. Is there a way to have my cake and eat it too?

If it is the same code in each action then set the variable in a
before_filter in the controller. Then it will be setup for each
action that you specify. Bone dry.

Colin

>
> Thanks,
>
> Walter
>
> --
> 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.
>

--
gplus.to/clanlaw

--
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