如何从RJS模板更改html标签属性值?
问题描述:
是否可以从RSJ模板更改html标记属性值? 我知道有一个page.replace_html方法,但它对我来说并不是非常有用,因为我有各种属性的冗长值(如alt,图像的标题)。 我想要的是改变RJS中img标签的src属性。 这可能吗?如何从RJS模板更改html标签属性值?
谢谢。
答
编辑:我的第一次尝试没有奏效,但这是一个。
update_page do |page|
page['image_id']['src'] = new_image_url
end
答
对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可能是更好的样式,如果这些是静态的。
答
根据Rails的设置,上面的代码可能只在排除page_update开始和结束行的时候才起作用 - 我在Windows 7上的mongrel上运行Rails,并将页面[element] [attribute]代码放在它自己的update_page块之外的工作正常,但将其包含在块中会破坏代码。
不客气。 =) – 2009-03-05 22:19:23