ruby-on-rails - 如何在 View 中只运行一次代码

标签 ruby-on-rails ruby

我有一个名为“_comment.erb”的局部 View ,它可能会被父级多次调用(例如在循环中)。 '_comment.erb' 看起来像:

<script>
function aaa() {}
</script>

<%= comment.content %>
<%=link_to_function 'Do', 'aaa()' %>

你可以看到如果'_comment.erb'被多次调用,javascript函数'aaa'将被重新定义很多次。我希望它可以只定义一次,但我不想将它移动到父 View 。

我希望有一个方法,比如'run_once',我可以这样使用它:

<%= run_once do %>
  <script>
  function aaa() {}
  </script>
<% end %>

<%= comment.content %>
<%=link_to_function 'Do', 'aaa()' %>

无论我调用'_comment.erb' 多少次,'run_once' 中的代码只会运行一次。我该怎么办?

最佳答案

这可能不是您问题的最佳解决方案,但创建一个只会产生一次的助手并不太麻烦:

助手

def output_once(name, &block)
    @output_once_blocks ||= []
    unless @output_once_blocks.include?(name)
        @output_once_blocks << name
        concat(capture(block), block.binding)
    end
end

用法

<% output_once :define_aaa do %>
    Your stuff here
<% end %>

关于ruby-on-rails - 如何在 View 中只运行一次代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3037997/

相关文章:

ruby - 如何在 ruby​​ 中组合包含 method_missing 的模块

ruby-on-rails - 如何自动将 OSM 数据集加载到 rake db :create or migrate 上的 rails postgresql db

ruby-on-rails - Gemfile 中的 Ruby 版本

ruby - 在 Rails 中,View 看不到 ApplicationController 中定义的实例变量

ruby - 在不同目录中打开文件以读取行 - ruby

ruby-on-rails - 验证失败时设计自定义消息

ruby - ruby 在哪里用作脚本引擎?

ruby-on-rails - RoR/Postgres - 两列唯一索引错误。 "duplicate key value violates unique constraint",即使没有任何记录

javascript - rails 4 : ajax call to controller action returning 404 not found

ruby-on-rails - 使用 Devise 进行客户端验证