Ruby on rails Rails 3:调用操作但不';是否离开/刷新当前页面?

Ruby on rails Rails 3:调用操作但不';是否离开/刷新当前页面?,ruby-on-rails,Ruby On Rails,在Rails 3中,有没有一种方法可以调用一个操作(使用数据库)而不刷新或运行该操作,然后重定向到当前页面 我试着在链接到中弄乱:remote=>true,但它对我不起作用。或者我误解了它的目的。。。或者我没有正确地使用它。我使用AJAX请求: <%= link_to "stock", { :controller => 'ReadItLater', :action => "stock", :qid => q.question_i

在Rails 3中,有没有一种方法可以调用一个操作(使用数据库)而不刷新或运行该操作,然后重定向到当前页面


我试着在
链接到
中弄乱
:remote=>true
,但它对我不起作用。或者我误解了它的目的。。。或者我没有正确地使用它。

我使用AJAX请求:

<%= link_to "stock", { :controller => 'ReadItLater', :action => "stock", 
                     :qid => q.question_id } , :remote => true, :class=>'ddm' %>

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

  • 使用正常的
    链接到
    及其变体
  • 使用带有可选参数的
    链接到
    :remote=>true
    (默认值为
    false
  • 第一个会导致正常请求/响应周期:

  • 在控制器中调用该操作
  • 如果没有特殊操作(
    渲染
    重定向
    ),只渲染与操作相关的视图。因此,如果该操作被称为
    do_db_stuff
    ,Rails3将尝试在相关视图目录中呈现
    do_db_stuff.html.erg
    (或do_db_stuff.html.haml`)
  • 您可以通过在操作结束时显式调用
    render
    redirect
    来更改此设置:
    • render
      :使用控制器的当前状态呈现您命名的模板
    • 重定向
      :重定向到(此控制器或其他控制器的)新操作,然后使用相关模板进行渲染
  • 例如,当调用
    create
    操作some save方法失败时,使用该方法,然后通过调用
    render:action=>“new”#不执行该方法返回到同一页面

    第二个调用操作,并将结果返回到页面。这是网页的责任,如何处理这一点。在一个稍微不同的场景中,例如,我的应用程序中有如下内容:

    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);
            }});
    }
    
  • 在视图的左侧,有一个任务列表
  • 对于每个任务项,都注册了一个点击处理程序,该处理程序在控制器上调用
    search\u task
    (通过使用JavaScript和AJAX)
  • 控制器通过发送
    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\u to
    中是否可能有类似的功能,也许有一个选项


    因此,如果您只想忽略结果,
    :remote=>true
    应该对您有效。

    :remote=>true
    应该有效。发布更多代码。哦,我试着在:action和:id周围使用{},现在它可以工作了!谢谢你的解释。你在回答中说“这是页面的责任,如何处理它”,我想知道:我如何告诉页面如何处理它?