Rails&原型 - 插入一个div并定位它

时间:2010-07-21 07:00:38

标签: ruby-on-rails prototype positioning

对于我的rails网站,当有人试图删除某个项目时,我希望弹出一个自定义div(而不是javascript警告框),在此之前要求确认。

目前,我这样做的方法是点击删除链接会调用一个函数(在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对我来说毫无意义。&gt;。&lt;)

我的update_page块中的第二行用于调用以插入的div为中心的javascript函数。

我编写并粘贴到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-- 我不确定这是否有用......这是delete_box的相关CSS代码。

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

因此CSS不会以任何方式触及定位。

1 个答案:

答案 0 :(得分:0)

有几个预先烘烤的库可以帮助您完成您所说的内容,可能比自己编写更容易。例如,Redbox是一个可以在Prototype中运行的rails插件。