RJS: Проверить наличие элемента страницы? - PullRequest
3 голосов
/ 10 марта 2009

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

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

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

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

Я получаю

TypeError: пустое значение, если текстовое поле не существует

.

Ответы [ 2 ]

6 голосов
/ 11 марта 2009

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

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

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

1 голос
/ 10 марта 2009

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

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

Javascript ..

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

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

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

...