2010-07-21 3 views
1

Для моего сайта рельсы, когда кто-то пытается удалить элемент, я хочу, чтобы выскочить пользовательский DIV (в противоположность окне предупреждения JavaScript) с запросом на подтверждение, прежде чем делать это.Rails & прототип - вставить DIV и поместите его

На данный момент, так что я делаю это, то, что нажав на ссылку Удалить вызовет функцию (в application_helper.rb), как показано ниже:

def show_delete_box(object, name) 
    update_page do |page| 
     page.insert_html :before, "content", render(:partial => "shared/generic_delete_box", :locals => { :object => object, :name => name }) 
     page << "$('delete_box').Center" 
    end 
    end 

Визуализированное парциальное предназначена появиться в на середине экрана, а местные - это то, что будет использовано для создания соответствующей ссылки удаления в div.

Однако моя проблема здесь пытается сделать вид, в середине экрана. Я всегда сильно страдал от javascript, и это тоже сбивает меня с ума. (Я, я пытался использовать поджигатель, как хорошо, но эти длинные строки JavaScript не значат для меня.>. <)

2-я строка в моем update_page блоке предназначена для вызова яваскрипта функции, которая центр вставленной дела.

Функция, которую я написал и застрял в моем application.js файл выглядит следующим образом:

Element.Center = function(element) { 
    var vH, vW, eH, eW; 
    var d = Element.getDimensions(element); 
    eH = d.height; 
    eW = d.width; 
    vH = document.viewport.getHeight(); 
    vW = document.viewport.getWidth(); 

    var y = (vH/2) - (eH/2) + "px"; 
    var x = (vW/2) - (eW/2) + "px"; 
    var style = { position: 'absolute'; top: y + 'px'; left: x + 'px'}; 

    element.setStyle(style); 
} 

Что происходит, когда я нажимаю, является то, что парциальное DIV создается и вставляется в страницу в соответствующей место. Тем не менее, я не могу это сделать. Итак, я ищу помощь! Что я делаю неправильно в функции javascript или пытаюсь вызвать функцию?

Заранее спасибо!

--edit-- Я не уверен, что это поможет ... Это соответствующий код CSS для delete_box.

#delete_box { 
    background-color: green; 
    border: 5px solid #999; 
    padding: 15px; 
    width: 600px; 
} 

Таким образом, CSS никоим образом не касается позиционирования.

+0

Почему не поставить позиционирование в CSS (с использованием позиции: фиксированная, например)? –

+0

'delete_box' должен появиться в середине страницы, так что мне не нужно будет рассчитать размеры окна просмотра, а затем поместить соответственно атрибуты' top' и 'left' в div? Я не думал, что такой расчет можно было бы сделать в таблицах стилей. –

ответ

0

Есть несколько предварительно обожженные библиотек, что там делать только то, что вы говорите, может быть проще, чем писать его самостоятельно. Redbox - это плагин rails, который работает в Prototype, например.

+0

Хммм ... Я мог бы просто сделать это. Это просто дошло до сути (я боролся с этим в течение нескольких дней и сейчас), где я действительно хочу понять, почему * он не работает, как учебный пункт. Но я, я определенно собираюсь пойти проверить Redbox. Спасибо! –

+0

Правильно, redbox удивительно прост в использовании. Большое спасибо! : D –

+0

Рад быть полезным :) – jasonpgignac

Смежные вопросы