Duda con mostrar abecedario


#1

Hola a todos ,

estoy mostrando un abecedario con links, de esta forma

<% “A”.upto(“Z”) do |l| -%>

  • <%= link_to l, my_path(:id => l) %>

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


    #2

    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

  • y sigue"

    No sé ya dirás

    2009/1/8 Miguel M. removed_email_address@domain.invalid


  • #3

    On Thu, Jan 8, 2009 at 6:13 PM, Miguel M.
    removed_email_address@domain.invalid 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| %>

  • <%= link_to l, my_path(:id => l) %>
  • <% end %>


    Jaime I.
    http://jaimeiniesta.com
    http://www.workingwithrails.com/person/6722-jaime-iniesta


    #4

    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 removed_email_address@domain.invalid
    escribió:


    #5

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


    #6

    Jaime I.
    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| %>

  • <%= link_to l, my_path(:id => l) %>
  • <% 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


    #7

    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 M.
    removed_email_address@domain.invalidescribió:


    #8

    muchas gracias a todos

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

    feliz año

    Atte.
    Miguel Michelson Martinez

    www.artenlinea.com

    2009/1/8 Arnau S. removed_email_address@domain.invalid