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