如何使用动态CSS'在Rails中

时间:2016-06-05 05:05:29

标签: html css ruby-on-rails ruby

我是Ruby on Rails的新手,我试图从数据库中的某些字段中提取信息,并将它们用作样式的方法。

例如,我的“学生”中有一个身高和宽度字段。数据库。我希望提取高度字段内容和宽度字段内容作为我的CSS文件的参数,以分别设置div标签的高度和宽度。

我在这方面遇到了很多麻烦。我已将视图index.html.erb中的样式表链接为:

opkg install bash
Installing bash (4.3.39-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/packages/packages/bash_4.3.39-1_ar71xx.ipk.
 Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for bash:
 *  libc *  libc *  libc * 
 * opkg_install_cmd: Cannot install package bash.

位于assets / stylesheets / students.scss

我不知道该怎么办。

2 个答案:

答案 0 :(得分:4)

如果样式是数据库驱动的,则不应依赖于在部署期间生成静态样式表的sprockets。

一个简单的解决方案是使用ERB构建css内容。

<style>
.students-container {
  height: "<%= @height.to_i %>px",
  width: "<%= @width.to_i %>px"
}
</style>

您可以将样式节点提取为部分节点,并在多个模板中重复使用它。

答案 1 :(得分:1)

似乎内联样式在这里可以正常工作。在您的ERB中,在您​​的学生div中,只需:

func scrollRowToVisible(row: Int, animated: Bool) {

    if animated {
        guard let clipView = superview as? NSClipView,
              let scrollView = clipView.superview as? NSScrollView else {

                assertionFailure("Unexpected NSTableView view hiearchy")
                return
        }

        let rowRect = rect(ofRow: row)
        var scrollOrigin = rowRect.origin

        let tableHalfHeight = clipView.frame.height * 0.5
        let rowRectHalfHeight = rowRect.height * 0.5

        scrollOrigin.y = (scrollOrigin.y - tableHalfHeight) + rowRectHalfHeight

        if scrollView.responds(to: #selector(NSScrollView.flashScrollers)) {
            scrollView.flashScrollers()
        }

        clipView.animator().setBoundsOrigin(scrollOrigin)

    } else {

        scrollRowToVisible(row)
    }
}

要么是这个,要么先为每个学生生成一个独特的CSS课程,然后在每个div中使用它。