仅在onclick事件上执行erb函数

时间:2016-06-08 22:15:10

标签: html ruby-on-rails ruby erb

我正在尝试在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()">

2 个答案:

答案 0 :(得分:1)

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

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

有关详细信息,请参阅working_with_javascript_in_rails

答案 1 :(得分:0)

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

Cartephotos_controller < ApplicationController
   include CartephotosHelper
end

和他们你可以简单地通过callyng来调用erb中的函数

<% charger_photos %>