JavaFree.org | RubyOnBr.org

Repeticoes de ifs

Acompanhar Repeticoes de ifs 6 posts, 5 participantes

Avatar Felipe Elias Philipp 2 posts

Pessoal,

Alguem tem alguma idéia para diminuir este código?(retirar a montoeira de ifs)

Sei que existe o método link_to_unless_current, mas acho que nao se encaixaria, porque eu tenho que colocar o ID do item da lista como “current” para a pagina atual.

e sim… eu estava tentando fazer um blog…:P

 
Tapa Tapajós 32 posts

Bem Felipe, vamos por partes.
Primeiro eu acho que você poderia usar um helper para não poluir tanto a vista e principalmente, para você poder fazer testes unitários desse código.

Para melhorar is ifs você pode usar um case

 
Avatar Shairon Toledo 1428 posts

Pode-se fazer um método no ApplicationHelper com a lógica de detecção da página corrente, tipo esse aqui

E na view usar assim, passando o key/value :only

 
Avatar Daniel Libanori 199 posts

Felipe,

Eu acho errado o ID ficar “migrando” de tag.

Eu faria uma classe para ul e mudaria a classe do ul conforme o link ativo:

$ script/generate controller Foo bar

app/controllers/foo_controller.rb

app/views/foo/bar.html.erb

http://localhost:3000/foo/bar

http://localhost:3000/foo/bar?active=foo

http://localhost:3000/foo/bar?active=bar

http://localhost:3000/foo/bar?active=bop

 
Avatar Daniel Libanori 199 posts

E claro… pode-se usar helpers e etc

O básico que eu queria passar é que na minha opnião, isso é um problema de estrutura do CSS: ao invés de determinar o id de cada li (inclusive, você abre a possibilidade de criar dois li’s com mesmo id), eu mudaria a class do elemento pai, no caso, ul.

 
Avatar rrsilva 181 posts
<ul class="<%= params[:controller] %>">
  <li><%= link_to 'Meus posts', posts_path, :class => :posts %></li>
  <li><%= link_to 'Contato', contacts_path, :class => :contacts %></li>
</ul>

Hmmm legal =D, desde que você não tenha links por ID’s

Convenções sobre configurações =)