仅在点击事件上执行 ERB 函数



我正在尝试构建一个 ruby on rails 应用程序,其中单击按钮会调用特定函数。 我将函数放在帮助程序模块中,并使用 onclick 事件调用该函数。 我的问题是,即使我不单击按钮,ERB 代码似乎仍在运行。我通过用正常工作的警报替换对该函数的调用来测试按钮,仅在单击按钮时弹出,但似乎在 html 中混合 erb 使其自动运行。我还尝试通过添加由 onclick 事件调用的 javascript 函数来传递中间步骤,但它并不能解决我的问题,因为代码无论如何都会运行。

索引.html.erb

<input type="button" name="test" value="Charger en masse" onclick="<%charger_photos%>">
module CartephotosHelper
  def charger_photos
    @test=Array.new
    Dir['./public/images/*'].each do |file_name|
      @test.push(file_name)
      next if File.directory? file_name 
    end
  end
end

通过使用 JavaScript 在 OnClick 事件之外调用函数进行测试

索引.html.erb

<script type="text/javascript">
  function chargermasse(){ 
    <%charger_photos%>
  }
</script>
<input type="button" name="test" value="Charger en masse" onclick="chargermasse()">

erb是嵌入式RuBy,它在服务器上运行,javascript在客户端(例如:浏览器)上运行。您正在尝试在客户端上运行 erb ,这是一个服务器端代码。它不起作用。

您需要做的是,在客户端,onClick事件应该调用服务器,收集这些结果并使用这些结果更新dom

有关详细信息

,请参阅working_with_javascript_in_rails。

帮助程序链接到您的模型而不是控制器,因此您必须在控制器中包含帮助程序

Cartephotos_controller < ApplicationController
   include CartephotosHelper
end

他们你可以简单地通过callyng从ERB调用函数

<% charger_photos %>

最新更新