我有一个服务器列表,列出了他们的名字以及他们是否已启动的状态。
但是,因为有2-300个不同的服务器,Ping请求完成并显示页面需要一段时间,因此我想通过使用用户单击的按钮来改进它,然后打开警报框通知用户服务器是否已启动并正在运行。
我已经有了一个ruby方法来进行测试,但是当我这样做时
<%= button_to_function "Status", "alert(serverUp?)" %>
我表单上的按钮没有做任何事情。是因为它只识别JS作为动作吗? 真的很想得到一些帮助。
否则,如果有人更好地快速显示主页面,然后异步运行serverUp?
方法,以便结果在表格中动态显示,并且不会使页面变慢显示,我将不胜感激。
提前多多感谢。
答案 0 :(得分:1)
假设serverup?
方法工作正常,您可以将其结果分配给控制器中的某个实例变量,然后在视图中使用它,如下所示
<%= button_to_function "Status", "alert('#{some_var}')" %>
编辑或不使用rails helpers
<input type="button" value="submit" onclick=<%= "alert('#{@var}')" %>>
然而它的价值应该包含任何'
,否则escape_javascript
助手也必须使用
如果你想用AJAX更新它可能就像
$('#my_button').click(function() {
$.post('/server_status/1', {}, function(response) {
alert(response);
}
});
答案 1 :(得分:1)
不,您无法运行Ruby代码onclick
。可以这样想:你的app处理浏览器的请求,运行控制器,将Ruby插入到.erb
视图文件中 - 生成纯文本 - 然后通过网络将其发送回浏览器。浏览器不知道您的服务器正在运行什么;它只是将onclick
事件解释为要运行的Javascript。
如果要将结果异步加载到预先显示的表中,您肯定可以。设置一个控制器操作,该操作运行ping并返回结果(以文本格式),并使按钮的onclick
(或在页面加载时运行的脚本)调用该方法。您应该可以使用link_to :remote => true
(或link_to_remote
用于Rails 2.x) - 查看您的文档。