Ruby on rails 在多个视图中包含变量定义

Ruby on rails 在多个视图中包含变量定义,ruby-on-rails,ruby,Ruby On Rails,Ruby,在许多视图中,我有以下类型的代码: <% compute a number of variables %> Do something with those variables to layout and configure HTML elements. 使用这些变量来布局和配置HTML元素。 我正在干涸,以使我的观点干涸。我计算变量值的第一部分在许多不同的视图中使用。我希望能够将它拉到另一个文件中,并在每个需要它的视图中使用它,这样我只需要在一个地方更改它。如果我将其拉入自己

在许多视图中,我有以下类型的代码:

<% compute a number of variables %>

Do something with those variables to layout and configure HTML elements.

使用这些变量来布局和配置HTML元素。
我正在干涸,以使我的观点干涸。我计算变量值的第一部分在许多不同的视图中使用。我希望能够将它拉到另一个文件中,并在每个需要它的视图中使用它,这样我只需要在一个地方更改它。如果我将其拉入自己的部分,然后在另一个视图中渲染该部分,则该视图中不会定义变量。更具体地说:

<% 
top = 0
link.siblings_before.each do |sibling|
   top = top + compute_top(sibling)
end
%>

<div style="position:absolute;top:<%= top %>px"><%= link.name %></div>


我希望能够在多个视图中使用top的计算,而不必将ruby代码剪切并粘贴到每个视图中。

尝试避免视图中的逻辑

您可以在控制器中定义一个
before_filter
,并为您需要的多个操作启用它


在before过滤器中定义的变量将在这些视图中可用,同时保持视图清晰

而是创建一个助手方法。对他们来说,在每个人身上循环似乎真的很浪费。无论你想实现什么,你都可以通过使用索引或更好的CSS来实现。其实,整个过程要复杂得多。我在屏幕上有许多对象需要根据用户交互重新绘制。有时这些变量在js.erb中用于更新现有对象的css,有时这些变量用于配置通过html.erb添加的新对象。当您声明要渲染的部分时,还可以设置要发送给它的局部变量。s/变量/实例变量/