从多个控制器操作更新相同的视图 - Rails

时间:2015-07-10 16:55:34

标签: ruby-on-rails ajax model-view-controller haml

我的应用程序只有一个视图页面。我的视图页面(oneview.haml)有以下流程。

  1. 最初它只包含带有提交按钮的表单。这是加载默认控制器操作oneview(加载初始oneview.haml)。

  2. 一旦用户填写表单并单击提交,我必须调用新的控制器操作并使用表单详细信息执行API调用,并且必须在同一视图(oneview.haml)上更新返回的数据。不应该重新加载oneview.haml,它必须在没有刷新的情况下进行更新。这是一个包含一些可点击行的表。

  3. 如果用户单击其中一行,则必须调用新的控制器操作。并且此控制器还会根据来自可点击行的传递参数来执行某些api调用,并且必须将新div添加到具有该行详细信息的同一页面中。这里也不应该重新加载页面,但必须通过添加额外的div来更新。

  4. 我对rails很新,以前没有处理过ajax。我知道动态加载和ajax的所有交易。但我的观点是,不同的控制器操作如何更新已存在的视图。我知道从控制器渲染中我们可以加载页面,但是如何在不同的控制器操作中向已经存在的页面添加内容。

    我知道这是一个很长的问题,我对此持续了几天。任何帮助和参考将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

最基本的参考资料可以在AJAX的JQuery网站上找到。

听起来您希望将on click事件绑定到将运行ajax调用的DOM元素,然后使用通过所述调用传递的数据在您的页面上执行某些操作。

点击装订简单:

$(document).on('click', 'selector', function() {
    //AJAX call
});

示例AJAX调用和Tutorial

 $.ajax({
    type: "GET",
    url: "methodUrl",
    success: function (returnedData) {
    //Do stuff with returnedData, for example appending html type data
    $("selector").append(returnedData);
    }
});

您可以将错误处理,POST数据添加到后端作为方法的参数,返回与您发送的数据类型不同的数据类型(使用contentType发送数据和dataType以接收数据)以及各种其他可自定义的选项,具体取决于具体内容你需要做的。

通常,AJAX是一种很好的方式来访问您的服务器并操纵对象和您的页面,而无需发送完整的页面重新加载请求。