Ruby on Rails

Ruby on Rails

Posts 1-1 of 1
  • Gerald Müller
    Gerald Müller    Premium Member
    The company name is only visible to registered members.
    Problem mit Anführungszeichen in einem per link_to_funktion erzeugten <select> Feld
    Hallo,

    ich habe folgendes Problem. Ich hoffe ich hab es verständlich formuliert!?

    In meinem Form werden aus einem :partial mehrere <select> Felder generiert.

    Mit link_to_funktion sollen noch weitere <select> Felder hinzugefügt werden können:
    link_to_function do |page|
    page.insert_html :bottom, :my_ul, :partial => 'my_partial', :object => MyModel.new
    end

    Im Partial wird das <select> Feld samt den <options> generiert.
    <%= form.select :my_model_id, @my_models.collect {|m| [ "#{m.artnr} - #{m.name}", m.id ] } %>

    Das funktioniert soweit auch. Wenn allerdings in einem MyModel.name irgendwo Anführungszeichen vorkommen funktioniert das Element.insert Javascript nicht mehr. Das generierte Javascript hat zwar alle Anführungszeichen html_escaped, aber es scheint trotzdem mit den anderen Anführungszeichen des <options> Tags durcheinander zu kommen.

    Mein erster Lösungsansatz war, den Namen schon im Partial zu escapen:
    <%= form.select :my_model_id, @my_models.collect {|m| [ "#{m.artnr} - #{h(m.name)}", m.id ] } %>

    So funktioniert das einfügen eines neuen <select> per link_to_funktion, aber bei den existierenden <select> Feldern wird der Name jetzt doppelt escaped, da anscheinend @my_models.collect standartmäßig ein html_escape macht. Was zur folge hat, dass aus z.B. & => &amp; auf der Seite angezeigt wird. In den per Javascript erzeugten <select> werden die so doppelt escapten Anführungszeichen wieder einmal zurück gewandelt, wodurch aus &amp;quote; wieder &quote; wird und das Anführungszeichen richtig angezeigt wird.

    Hat jemand eine Lösung wie man bei beiden die richtige Ausgabe hin bekommt?

    Schon mal Danke im Voraus!