2009-03-05 5 views
2

Ist es möglich, einen HTML-Tag-Attributwert von einer RSJ-Vorlage zu ändern? Ich weiß, dass es eine page.replace_html Methode gibt, aber in meinem Fall ist es nicht sehr nützlich, da ich lange Werte verschiedener Attribute (wie alt, Titel eines Bildes) habe. Was ich will, ist Änderung src Attribut eines img-Tags in RJS. Ist das überhaupt möglich?Wie HTML-Tag-Attributwert von RJS-Vorlage ändern?

Vielen Dank.

Antwort

3

EDIT: Mein erster Versuch hat nicht funktioniert, aber dieses tut.

update_page do |page| 
    page['image_id']['src'] = new_image_url 
end 
+0

Gern geschehen. =) –

3

Geringfügige Änderung an Can's Antwort. Wie bereits angedeutet,

update_page do |page| 
    page['image_id']['src'] = new_image_url 
end 

übersetzt JS:

$('image_id').src = new_image_url 

Dies ist für einige Attribute arbeiten, die direkten JS DOM variablen Zugriff haben, viele nicht. Zum Glück RJS ist ziemlich gut bei JS Methode Umschreiben ruft:

update_page do |page| 
    page['image_id'].set_attribute('attrib', new_attrib_val) 
end 

JS übersetzt:

$('image_id').setAttribute('attrib', new_attrib_val) 

und Sie sollten gut zu gehen.


Kleines Update: Sie können write_attribute stattdessen verwenden, wenn Sie IE-Kompatibilität möchten.

Kleines Update: im oben, würde [: src] und: attrib wahrscheinlich besser Stil sein, wenn diese statisch sind.

0

Je nach Rails-Setup funktioniert der obige Code möglicherweise nur, wenn Sie die Anfangs- und Endzeilen von page_update ausschließen - ich verwende Rails on Mongrel unter Windows 7 und lege den Seitencode [element] [attribute] an eine eigene, außerhalb des update_page-Blocks, funktioniert gut, aber wenn es innerhalb des Blocks eingeschlossen wird, bricht der Code.