我正在尝试构建一个 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 %>