Helper Methods Customizados

O que é um Helper?

Helpers no rails são módulos usados com a finalidade de extrair complexidade lógica das views.

Movendo a lógica da view

Quando estamos desenvolvendo alguma funcionalidade e nos deparamos com algo alguma lógica entre apresentar ou não algo para o usuário. Podemos fazer como é feito abaixo, porém em alguma outra tela vamos precisa fazer o mesmo, verificar se o usuário tem email

  <% if @customer && @customer.email.present? %>
    <%= @user.email %>
  <% end %>

A solução é ser reutilizável, assim criaremos nosso helper.

module CustomersHelper
  def customer_email(customer)
    customer.email if customer.try(:email)
  end
end

Agora podemos usar em nossa view nosso Helper recém criado.

<%= user_email(@user) %>

Dicas

Não use variáveis de instância nos Helpers, isso vai tornar o helper difício de manter se você ficar mudando o estado de uma helper.

Carregamento dos Helpers

Nas versões dos Rails inferiores a 4 os helpers só eram carregados quando o nome do Helper dava match com o nome do controllers. Exemplo: um controller CustomersController iria carregar o CustomersHelpers e ia ficar disponível nas views da pasta /views/customers/* . Isto não funciona mais assim, cada controller carrega todos os helpers, se você quer voltar com o comportamento anterior é possível usar a config abaixo.

config.action_controller.include_all_helpers = false

Referências

Api - Ruby on Rails
StackOverflow