This is actually my point. Helpers are useful when you build a method that 
is reusable enough to be used in different places. I didn't write this 
because I wanted to get rid of helpers. I still use helpers while using 
this new content_tag() method.

My rule of thumbs is as follow:

I start with content_tag, as soon as I can use a helper to wrap different 
content_tag under 1 helper method, I'll do it.

I believe that there's a space between inline HTML and helper methods that 
this could very well address. As for the tests, well, I don't know how you 
tests your helpers but I do test mine by looking at the rendered HTML and 
querying it. Same can be done with this method. I highly doubt that you 
don't have a single flow condition in your views.

On Monday, October 27, 2014 11:24:04 AM UTC-4, Abdelkader Boudih wrote:
>
> Could you give an example how to test it before burying my argument.
> Also helpers can be reused in other views/partials . 
>
> On 27 October 2014 15:19, Pier-Olivier Thibault <pot...@gmail.com 
> <javascript:>> wrote:
>
>> This is as testable as any helpers. This argument is moot.
>>
>> On Monday, October 27, 2014 9:58:42 AM UTC-4, Abdelkader Boudih wrote:
>>>
>>> Helpers are testable! 
>>> Views should have no complex logic on them. 
>>>
>>> On 27 October 2014 11:40, Pier-Olivier Thibault <pot...@gmail.com> 
>>> wrote:
>>>
>>>> I am aware of the existence of helpers. But they are in no way a silver 
>>>> bullet to building HTML tags. First of all, the number of helper_class() 
>>>> methods proportionally increment with the number of attributes/class you 
>>>> use. Soon enough, you get very complicated helper method name due to very 
>>>> close but yet different methods. This is one of the reason why some people 
>>>> uses Presenters/Decorators in their project.
>>>>
>>>> On Monday, October 27, 2014 5:12:43 AM UTC-4, Abdelkader Boudih wrote:
>>>>>
>>>>> :-1:  You should be using helpers.
>>>>>
>>>>>
>>>>> <% for @posts.each do |post|%>
>>>>>  <%= content_tag :li, post.title, class: post_classes(post) %>
>>>>> <% end %>
>>>>>
>>>>> # in PostHelper
>>>>> def  post_classes(post)
>>>>>  # your code here
>>>>> end
>>>>>
>>>>> On 27 October 2014 09:02, Anuj Dutta <dutta...@googlemail.com> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> How about moving the conditional to a helper in your first example? 
>>>>>> Just curious to know if you would prefer that approach.
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> Anuj
>>>>>>
>>>>>> On 26 Oct 2014 17:34, "Pier-Olivier Thibault" <pot...@gmail.com> 
>>>>>> wrote:
>>>>>> >
>>>>>> > Hello everyone,
>>>>>> >
>>>>>> > I have a feature request here that comes from an internal struggle 
>>>>>> here between view helpers, decorator patterns and ERB in general. A 
>>>>>> problem 
>>>>>> that occurs from time to time is how to build HTML tags with different 
>>>>>> settings depending on the some states. Here's an example of what I mean.
>>>>>> >
>>>>>> > <% for @posts.each do |post|%>
>>>>>> >  <%= content_tag :li, post.title, class: "post #{post.id == 3 ? 
>>>>>> 'selected' : ''}" %>
>>>>>> > <% end %>
>>>>>> >
>>>>>> > With builtin' methods, there's many way to build this kind of HTML 
>>>>>> tag. And I'm sure people here knows a few of them. However, none seem to 
>>>>>> really make it easy to build them. So I decided to take a stab at it 
>>>>>> this 
>>>>>> weekend and came up with this solution.
>>>>>> >
>>>>>> > <% for @posts.each do |post|%>
>>>>>> >  <%= content_tag :li, class: %w(post) do |li| %>
>>>>>> >    <% if post.id == 3 %>
>>>>>> >      <% li.css << 'selected' %>
>>>>>> >    <% end %>
>>>>>> >    post.title
>>>>>> >  <% end %>
>>>>>> > <% end %>
>>>>>> >
>>>>>> > All attributes can be either set inline (as previously possible) or 
>>>>>> through a tag object that is available inside the block. Now, since this 
>>>>>> might not be really easy to figure out how useful this could be, I 
>>>>>> created 
>>>>>> a helper that overrides content_tag() and saved it as a gist for you to 
>>>>>> test out locally. It's very possible that there's a few bugs as it's the 
>>>>>> very first version. 
>>>>>> >
>>>>>> > Gist: https://gist.github.com/pothibo/69d60505fa6e44863e52
>>>>>> >
>>>>>> > Would this be something RoR:Core would be interested in merging 
>>>>>> into Rails?
>>>>>> >
>>>>>> > -- 
>>>>>> > You received this message because you are subscribed to the Google 
>>>>>> Groups "Ruby on Rails: Core" group.
>>>>>> > To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to rubyonrails-co...@googlegroups.com.
>>>>>> > To post to this group, send email to rubyonra...@googlegroups.com.
>>>>>> > Visit this group at http://groups.google.com/group/rubyonrails-core
>>>>>> .
>>>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>>>  
>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "Ruby on Rails: Core" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to rubyonrails-co...@googlegroups.com.
>>>>>> To post to this group, send email to rubyonra...@googlegroups.com.
>>>>>> Visit this group at http://groups.google.com/group/rubyonrails-core.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Ruby on Rails: Core" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to rubyonrails-co...@googlegroups.com.
>>>> To post to this group, send email to rubyonra...@googlegroups.com.
>>>> Visit this group at http://groups.google.com/group/rubyonrails-core.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Ruby on Rails: Core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to rubyonrails-co...@googlegroups.com <javascript:>.
>> To post to this group, send email to rubyonra...@googlegroups.com 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/rubyonrails-core.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to