Forum: Rails-ES duda con mostrar abecedario

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bf47b813b0de4867a015fd4b54ac2fb4?d=identicon&s=25 Miguel Michelson (samek)
on 2009-01-08 18:13
(Received via mailing list)
Hola a todos ,

estoy mostrando un abecedario con links, de esta forma

<% "A".upto("Z") do |l| -%>
         <li><%= link_to l, my_path(:id => l) %></li>
      <% end %>

ahora me salta la duda como puedo meter ahi la 'ñ' y 'LL' y 'CH'.

alguna idea de como hacerlo de manera elegante y no escribir todo el
abecedario en duro?


Saludos



Atte.
Miguel Michelson Martinez
Adce10d7f1dbabcdab8f525a59cec32f?d=identicon&s=25 Andrés Gutiérrez (andresgutgon)
on 2009-01-08 18:19
(Received via mailing list)
A ver , puede que diga una burrada, pero no podrías interrumpir el each
con
un if, until o algo asi y decir "Si llegas a la n, mete la ñ con
<li></li> y
sigue"

No sé ya dirás

2009/1/8 Miguel Michelsongs <miguelmichelson@gmail.com>
0e6c0ba9935b52866fd5c54dd886cf2e?d=identicon&s=25 Jaime Iniesta (Guest)
on 2009-01-08 18:32
(Received via mailing list)
On Thu, Jan 8, 2009 at 6:13 PM, Miguel Michelsongs
<miguelmichelson@gmail.com> wrote:
> alguna idea de como hacerlo de manera elegante y no escribir todo el
> abecedario en duro?

¿Te valdría con un array de todas las letras?

<%
['a','b','c','ch','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z'].each
do |l| %>
  <li><%= link_to l, my_path(:id => l) %></li>
<% end %>

--
Jaime Iniesta
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta
1f2eadfb41362800ebc2cf211b91d0f7?d=identicon&s=25 javier ramirez (Guest)
on 2009-01-08 18:33
(Received via mailing list)
>
> <% "A".upto("Z") do |l| -%>
>
> ahora me salta la duda como puedo meter ahi la 'ñ' y 'LL' y 'CH'.

a mí lo más limpio me parece montar el array entero por cada idioma que
quiera soportar, a no ser que  haya alguna librería que entienda de
collations (no conozco ninguna) por ahí y te lo dé resuelto

una opción para escribir menos es hacer algo como esto

('a'..'z').to_a.insert(3,'ch').insert(13,'ll').insert(16,'ñ')
partiendo del abecedario inglés, le metes los caracteres extras.

Y como cosa genérica podrías hacer incluso esto

base_abc=('a'..'z')
es_cl={'ch'=>3,'ll'=>13,'ñ'=>16}
es_cl_abc=base_abc.to_a
es_cl.sort_by{|x| x.last}.each {|x| es_cl_abc.insert(x.last,x.first)}


Ahora tienes en es_cl_abc un array con la collation correcta para ese
abecedario. Para otros idiomas sólo tendrías que cambiar la hash y poner
cada carácter y su posición relativa en la serie

saludos


--
javier ramírez

..i do ruby on rails development in madrid, spain, at
http://www.aspgems.com
..you can find out more about me on http://formatinternet.wordpress.com
and http://workingwithrails.com/person/5987-javier-ramirez
Adce10d7f1dbabcdab8f525a59cec32f?d=identicon&s=25 Andrés Gutiérrez (andresgutgon)
on 2009-01-08 18:37
(Received via mailing list)
Soy unos máquinas, siempre aprendo y me doy cuenta de lo poquito que sé,
pero en fin, poco a poco que de otra forma no se aprende. Como pensaba
mi
propuesta era una chorrada y mucho más complicada

Un saludo

El 8 de enero de 2009 18:32, javier ramirez <jramirez@aspgems.com>
escribió:
3afe861b4ef14532416ae5e417537ef7?d=identicon&s=25 Arnau Sánchez (tokland)
on 2009-01-08 18:50
(Received via mailing list)
Jaime Iniesta
escribió:
> ¿Te valdría con un array de todas las letras?
>
> <% 
['a','b','c','ch','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z'].each
> do |l| %>
>   <li><%= link_to l, my_path(:id => l) %></li>
> <% end %>
>

A mí también me parece la mejor solución crear el array a mano. Sólo comentar
que quedaría algo más compacto escrito
así:
letters = "a b c ch d.......z".split

o

letters = %w{a b c ch d ... z}

Miguel, es una recomendación clásica el no usar "l" (letra ele) como nombre
de
variable, en algunas tipografías es indistinguible de "1" (número uno). Además,
siempre es aconsejable que las variables tengan un nombre más descriptivo,
incluso las locales de un bloque.

saludos,
arnau
Bf47b813b0de4867a015fd4b54ac2fb4?d=identicon&s=25 Miguel Michelson (samek)
on 2009-01-08 20:06
(Received via mailing list)
muchas gracias a todos

me sirven todas la soluciones, ahora voy a ver cual me acomoda mas :D

feliz año

Atte.
Miguel Michelson Martinez
---------------------------------------
www.artenlinea.com


2009/1/8 Arnau Sanchez <rbarnau@gmail.com>
9f13f0ff5f5f41f5598ad755f192ca3a?d=identicon&s=25 Luis felipe Hurtado campuzano (luisfelipehurtado)
on 2009-01-09 03:49
(Received via mailing list)
También me voy por el array a mano. Además, porque seguro que cuando
comiences a usarlo notarás que es mas fácil "unir" varias letras que no
son
tan usadas en castellano; por ejemplo podrías hace un link con 'XYZ'
seguro
que queda mucho mejor.

Luis Hurtado.

El 8 de enero de 2009 14:05, Miguel Michelsongs
<miguelmichelson@gmail.com>escribió:
This topic is locked and can not be replied to.