单击按钮可打开警告框并显示ruby方法输出

时间:2011-08-11 12:00:59

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个服务器列表,列出了他们的名字以及他们是否已启动的状态。

但是,因为有2-300个不同的服务器,Ping请求完成并显示页面需要一段时间,因此我想通过使用用户单击的按钮来改进它,然后打开警报框通知用户服务器是否已启动并正在运行。

我已经有了一个ruby方法来进行测试,但是当我这样做时

<%= button_to_function "Status", "alert(serverUp?)" %>

我表单上的按钮没有做任何事情。是因为它只识别JS作为动作吗? 真的很想得到一些帮助。

否则,如果有人更好地快速显示主页面,然后异步运行serverUp?方法,以便结果在表格中动态显示,并且不会使页面变慢显示,我将不胜感激。

提前多多感谢。

2 个答案:

答案 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) - 查看您的文档。

相关问题