Как изменить значение атрибута HTML-тега из шаблона RJS? - PullRequest
2 голосов
/ 05 марта 2009

Можно ли изменить значение атрибута html-тега из шаблона RSJ? Я знаю, что есть метод page.replace_html, но он не очень полезен в моем случае, поскольку у меня есть длинные значения различных атрибутов (таких как alt, заголовок изображения). Я хочу изменить атрибут src тега img в RJS. Это вообще возможно?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 15 марта 2009

Небольшая модификация ответа 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)

и тебе пора идти.


Небольшое обновление: вместо этого вы можете использовать write_attribute, если хотите совместимости с IE.


Небольшое обновление: выше, [: src] и: attrib, вероятно, были бы лучшим стилем, если они статические.

3 голосов
/ 05 марта 2009

РЕДАКТИРОВАТЬ: Моя первая попытка не сработала, но эта работает.

update_page do |page|
  page['image_id']['src'] = new_image_url
end
0 голосов
/ 17 июля 2010

В зависимости от настройки Rails приведенный выше код может работать, только если вы исключите начальную и конечную строки page_update - я запускаю Rails на mongrel в Windows 7 и помещаю код страницы [element] [attribute] в его own вне блока update_page работает нормально, но включение его в блок нарушает код.

...