2009-03-05 60 views
2

是否可以从RSJ模板更改html标记属性值? 我知道有一个page.replace_html方法,但它对我来说并不是非常有用,因为我有各种属性的冗长值(如alt,图像的标题)。 我想要的是改变RJS中img标签的src属性。 这可能吗?如何从RJS模板更改html标签属性值?

谢谢。

回答

3

编辑:我的第一次尝试没有奏效,但这是一个。

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

不客气。 =) – 2009-03-05 22:19:23

3

对Can的答案稍作修改。至于建议,

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

转化为JS:

$('image_id').src = new_image_url 

这将为一些属性有直接的JS DOM变量访问工作,很多都没有。幸运的是,RJS是重写JS方法不错来电:

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

转化为JS:

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

,你应该是好去。


小更新:如果您想要IE兼容性,您可能想使用write_attribute。


小更新:在上面,[:src]和:attrib可能是更好的样式,如果这些是静态的。

0

根据Rails的设置,上面的代码可能只在排除page_update开始和结束行的时候才起作用 - 我在Windows 7上的mongrel上运行Rails,并将页面[element] [attribute]代码放在它自己的update_page块之外的工作正常,但将其包含在块中会破坏代码。