是否可以从 RSJ 模板更改 html 标签属性值?我知道有一个 page.replace_html 方法,但在我的情况下它不是很有用,因为我有各种属性的冗长值(例如 alt、图像的标题)。我想要的是更改 RJS 中 img 标签的 src 属性。这有可能吗?
谢谢你。
是否可以从 RSJ 模板更改 html 标签属性值?我知道有一个 page.replace_html 方法,但在我的情况下它不是很有用,因为我有各种属性的冗长值(例如 alt、图像的标题)。我想要的是更改 RJS 中 img 标签的 src 属性。这有可能吗?
谢谢你。
编辑:我的第一次尝试没有成功,但这次成功了。
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,并将 page[element][attribute] 代码放在它自己的外部update_page 块的一部分,工作正常,但将其包含在块中会破坏代码。