Rails:将视图中的变量传递给样式表

时间:2014-11-22 15:25:17

标签: css ruby-on-rails

我在视图中渲染部分:

<section class="about map">
<h3>Contact address</h3>
<div id="gmap">
</div>
<% content_for :address_slider_top, 50 %>
<% content_for :address_slider_left, 80 %>
<%= render partial: 'address_slider' %>
</section>

我想设置值 address_slider_top address_slider_left ,这样我就可以从视图中决定我的css.erb中部分“address_slider”的位置

#addresses{
width: 300px;
background-color: #fff;
height: 400px;
margin-top: <%= yield(:address_slider_top).to_s %>px;
margin-left: <%= yield(:address_slider_left).to_s  %>px;
}

它给了我一个LocalJumpError。 我试过

<%= render partial: "address_slider", locals: {address_slider_top: 50, address_slider_left: 80} %>

但我也无法使它发挥作用。

1 个答案:

答案 0 :(得分:1)

资产不是观点。当然它们受到HTTP的类似处理,但它们在本质上并不相似,并且用于不同的目的。

大部分时间资产都有一个有趣的属性:它们是静态的,它们永远不会改变。另一方面,视图是数据的表示,并且经常发生变化。

因此,Rails有一个利用该静态的资产管道。在开发过程中,资产保持较大以便于调试,并在每次更改时重新编译。但是,在生产中,有一个特殊任务rake assets:precompile可以将资产编译到public文件夹中,然后通常由反向代理服务,例如 nginx 快速执行。< / p>

因此,在资源中嵌入变量的最佳选择是在视图中呈现相关样式。它可能是用HTML内联编写的,它可能是一个呈现CSS的特定视图(但我从来没有见过任何人真正这样做过)。