加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 3:调用操作但不离开/刷新当前页面的链

发布时间:2020-12-17 03:35:17 所属栏目:百科 来源:网络整理
导读:Rails 3中是否有一种方法可以调用操作(与数据库一起使用)而无需刷新或运行操作,然后重定向到当前页面? 我试过搞乱:remote =在link_to中为true,但它对我不起作用.或许我误解了它的目的……或者我错误地使用它. 解决方法 从Rails3中的视图调用操作时,通常有2
Rails 3中是否有一种方法可以调用操作(与数据库一起使用)而无需刷新或运行操作,然后重定向到当前页面?

我试过搞乱:remote =>在link_to中为true,但它对我不起作用.或许我误解了它的目的……或者我错误地使用它.

解决方法

从Rails3中的视图调用操作时,通常有2种情况:

>使用正常的link_to及其变体.
>将link_to与可选参数一起使用:remote => true(默认为false)

第一个导致正常的请求/响应周期:

>在控制器中调用操作.
>如果没有任何特殊操作(渲染或重定向),只需渲染与操作相关的视图.因此,如果该操作被称为do_db_stuff,则Rails3会尝试在相关的视图目录中呈现do_db_stuff.html.erg(或do_db_stuff.html.haml`).
>您可以通过在操作结束时显式调用渲染或重定向来更改它:

> render:使用控制器的当前状态呈现您命名的模板.
> redirect:重定向到(此控制器或其他控制器)的新操作,然后使用相关模板进行渲染.

这是例如在create action中调用一些save方法时失败,然后通过调用render返回同一页面:action => “新”#不执行该方法

第二个只调用操作,并将结果返回到页面.页面的责任是如何处理这个问题.在略有不同的情况下,我有例如在我的应用程序中的东西是这样的:

>在视图的左侧,有一个任务列表.
>对于每个任务项,都注册了一个点击处理程序,该处理程序在控制器上调用search_task(通过使用带AJAX的JavaScript).
>控制器通过发送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);
        }});
}

(在这里附加了整个点击功能)
>因此结果(成功发送时)将导致目标的内容将被发送的HTML代码替换.

我不知道link_to是否可以有类似的东西,也许有一个选项.

是的,:remote =>如果您只想忽略结果,true应该适合您.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读