gpt4 book ai didi

ruby-on-rails - rails 3 : Links that Call Actions but Don't Leave/Refresh the Current Page?

转载 作者:行者123 更新时间:2023-12-03 16:04:51 25 4
gpt4 key购买 nike

Rails 3 中有没有办法在不刷新或运行 Action 然后重定向到当前页面的情况下调用 Action (玩弄数据库)?

我试着弄乱 :remote => truelink_to ,但这对我不起作用。或者我可能误解了它的用途……或者我使用不当。

最佳答案

在 Rails3 中从 View 调用操作时,通常有两种情况:

  • 使用正常 link_to与它的变化。
  • 使用 link_to带有可选参数 :remote => true (默认为 false )

  • 第一 一个结果是正常的请求/响应周期:
  • 在 Controller 中调用操作。
  • 如果没有什么特别的事情( renderredirect ),只渲染与 Action 相关的 View 。所以如果这个 Action 被调用 do_db_stuff , Rails3 尝试渲染 do_db_stuff.html.erg (或 do_db_stuff.html.haml`)在相关 View 目录中。
  • 您可以通过显式调用 render 来更改它。或 redirect在你的行动结束时:
  • render :使用 Controller 的当前状态呈现您命名的模板。
  • redirect : 重定向到一个新的 Action (这个或另一个 Controller 的),然后使用相关的模板来渲染。

  • 这是例如在 create 中调用时使用操作一些保存方法,该方法失败,然后您通过调用 render :action => "new" # doen't execute the method 返回到同一页面

    第二个一个只是调用操作,并将结果返回到页面。页面的责任是如何处理这个。在稍微不同的情况下,我有例如在我的应用程序中是这样的:
  • 在 View 的左侧,有一个任务列表。
  • 对于每个任务项,都注册了一个调用 search_task 的点击处理程序。 (通过将 JavaScript 与 AJAX 结合使用)在 Controller 上。
  • Controller 通过发送 render :partial ... 的结果来响应该调用。打回来。
  • 处理程序中的 JavaScript 函数注册了一个成功函数,如下所示:
    element.bind('click', function() {
    $('#left').children().removeClass('selected')
    element.addClass('selected');
    $.ajax({url: '/tasks/search_task/' + task_id,
    async: false,
    dataType: 'html',
    success: function(data) {
    target.html(data);
    }});
    }

    (在此处附加了整个点击功能)
  • 所以结果(成功发送时)将导致 target 的内容将替换为发送的 HTML 代码。

  • 我不知道 link_to 是否有类似的可能,或许还有一个选择。

    是的, :remote => true如果您只想忽略结果,应该对您有用。

    关于ruby-on-rails - rails 3 : Links that Call Actions but Don't Leave/Refresh the Current Page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944074/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com