仅在 onclick 事件上执行 erb 函数

execute erb function only on onclick event

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

index.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 事件之外调用函数进行测试

index.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 %>