【问题标题】:Updating same view from multiple controller actions - Rails从多个控制器操作更新相同的视图 - Rails
【发布时间】:2015-09-29 12:43:45
【问题描述】:

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

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

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

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

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

我知道这是一个很长的问题,我在这个问题上停留了几天。任何帮助和参考将不胜感激。谢谢

【问题讨论】:

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


    【解决方案1】:

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

    听起来您希望将单击事件绑定到将运行 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);
        }
    });
    

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

    一般而言,AJAX 是一种无需发送完整的页面重新加载请求即可访问服务器并操作对象和页面的好方法。

    【讨论】:

    • 感谢 ajax 建议。但主要是我在寻找 Rails 方面的建议,如何处理来自多个控制器操作的一个视图页面
    • 在 ajax 调用中使用 URL,您可以在后端使用任何方法。然后使用多个 ajax 调用来访问不同的端点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多