在Rails中,有没有办法从应用程序布局中有选择地加载视图中的文件?

时间:2010-04-21 23:55:21

标签: ruby-on-rails

所以在我的Rails应用程序中,我正在尝试在某些视图上设置Javascript测试。

现在,我通过在每个视图中设置条件来做到这一点。

<% if AppConfig['js_testing'] %>
<script>
...
</script>
<% end %>

如果我在每个页面上都有,那么就会有很多代码重复。有没有办法管理应用程序布局中的所有内容?

1 个答案:

答案 0 :(得分:0)

有几个地方你可以把这个有助于减少重复。主要布局是理想的候选人。另一种可能性是辅助方法,它更容易引入。

您还可以定义条件javascript_tag辅助方法,只有在设置了触发器时才会引入JavaScript。通常这是:

def javascript_testing_tag(content)
  AppConfig['js_testing'] ? javascript_tag(content) : ''
end

然后,使用该条件包装所有测试脚本是一个非常简单的练习。如果此行为的逻辑触发器发生更改,它将使以后更容易重构。

最佳实现取决于您引入的脚本内容类型。如果它与特定视图中可能存在的JavaScript紧密相关,那么您可能会陷入困境。

另一种方法是简单地标记每个页面并拥有一个测试JavaScript工具,它将触发特定的行为,具体取决于文档的结构。例如,如果有一个元素div#user_list,则可以运行testUserList()。

如果不在非测试环境中包含测试JavaScript文件,那将是微不足道的。