Вы можете проверить, что полученная строка выглядит примерно так
t.available = row['available'] == 't'
. Это присвоит t.available
логическое значение true
else false
. значения и сохраните его nil
, если значение не указано, вы можете использовать
t.available = if row['available'] == 't'
true
elsif row['available'] == 'f'
false
end
Вместо того, чтобы напрямую связываться с innerHTML
, может быть лучше создать фрагмент, а затем вставить следующее:
function create(htmlStr) {
var frag = document.createDocumentFragment(),
temp = document.createElement('div');
temp.innerHTML = htmlStr;
while (temp.firstChild) {
frag.appendChild(temp.firstChild);
}
return frag;
}
var fragment = create('<div>Hello!</div><p>...</p>');
// You can use native DOM methods to insert the fragment:
document.body.insertBefore(fragment, document.body.childNodes[0]);
Преимущества:
Несмотря на то, что innerHTML
используется внутри функции, все это происходит вне DOM, так что это гораздо быстрее, чем вы думаете ...
В старой школе JavaScript вы могли сделать это:
document.body.innerHTML = '<p id="foo">Some HTML</p>' + document.body.innerHTML;
В ответ на ваш комментарий:
[...] Мне было интересно объявить источник атрибутов и событий нового элемента, а не
innerHTML
элемента.
Вам нужно внедрить новый HTML в DOM, хотя; Вот почему innerHTML
используется в примере старой школы JavaScript. innerHTML
элемента BODY
предваряется новым HTML. На самом деле мы не касаемся существующего HTML внутри BODY
.
Я перепишу вышеупомянутый пример, чтобы прояснить это:
var newElement = '<p id="foo">This is some dynamically added HTML. Yay!</p>';
var bodyElement = document.body;
bodyElement.innerHTML = newElement + bodyElement.innerHTML;
// note that += cannot be used here; this would result in 'NaN'
Использование инфраструктуры JavaScript сделает этот код намного менее многословным и улучшит читабельность , Например, jQuery позволяет вам делать следующее:
$('body').prepend('<p id="foo">Some HTML</p>');