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

时间:2017-02-15 14:18:55

标签: ruby-on-rails ruby

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

<% compute a number of variables %>

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

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

<% 
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代码剪切并粘贴到每个视图中。

1 个答案:

答案 0 :(得分:0)

尝试避免视图中的逻辑。

您可以在控制器中定义before_filter并启用它以执行您需要的多个操作。

您在之前过滤器中定义的变量将在这些视图中可用,并且您可以同时保持视图清晰。