RJS:Проверить наличие существующего элемента страницы?

StackOverflow https://stackoverflow.com/questions/630637

Вопрос

У меня есть текстовое поле с идентификатором "foo", которое иногда существует, а иногда нет.Если он существует, я бы хотел ввести определенное значение.

Как вы делаете это, используя RJSРельсы 2.2)?

Я попробовал это, и это не сработало:

if page[:foo]
  page[:foo].value = "bar"
end

Я получаю

Ошибка типа:Нулевое значение, если текстовое поле не существует

.

Это было полезно?

Решение

Я много раз сталкивался с этим, когда у меня есть условный элемент, с которым нужно действовать, если он существует.Использование page.select позволяет избежать ошибки с нулевым значением.

  page.select('#dom_object_id').each do |element|
    element.value = "bar"
  end

Я поместил это в свой файл *.js.rjs.Когда select отправляет пустой массив каждому, он ничего не возвращает вместо TypeError, который вы получили бы при прямом выборе по id, когда на странице нет объекта DOM с правильным идентификатором.

Другие советы

Я не думаю, что вы можете использовать RJS.В качестве обходного пути вы можете просто вызвать метод javascript из RJS, который проверяет, существует ли элемент.

page << "update_foo('#{my_value}');"

Javascript ..

function update_foo(val)
{
  if( $('foo') != undefined )
  {
    $('foo').value = 'bar';
  } 
}

Редактировать

Исправлена рубиновая часть..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top