繁体   English   中英

Rails从jQuery加载请求中加载部分

[英]rails load partial from jquery load request

当用户单击我的应用程序中的一个复选框时,我通过Submit.rails发送一个远程表单,效果很好。 现在,在div中有一个值,在发送表单后需要立即刷新该值。 在研究了如何实现这一点之后,我来到了我的jquery函数中的这个解决方案:

$( "input#my-checkbox" ).click(function() {
 $(this.form).trigger('submit.rails');
 $("#count-items").load();
});

这不起作用,因为load()函数需要加载某些内容,例如特定视图。 我无法将视图加载到div中,因此创建了局部视图,但无法正确呈现。 必须有一种更简单的方法来刷新div中的内容。

<div id="count-items"><%= render "pages/count_items" %></div>

上面的方法也无法按说明工作。 部分内容不会在load()上呈现。

我如何简单地重新加载如下所示的div内容(foo):

<div id="count-items"><%= foo %></div>

从上面的代码中点击我的复选框(单击事件)之后?

这是我处理这种互动的方式。 它可能不是唯一的解决方案,但对我来说一直很好。 在您看来,当您希望由于ajax请求而呈现某些内容时,还需要向服务器创建一个请求,服务器返回一个响应,然后在所需的html节点中呈现该响应。

在视图中(类似这样,我已经从coffeescript更新了它),假设您正在更新复选框计数器(URL-> / checkboxes / update_counter)

$("input#my-checkbox").click(function() {
    $.ajax(
        type: "POST",
        data: {key: 'value'}, //$(this.form).trigger('submit.rails'); should be handled here
       url: "/checkboxes/update_counter",
       dataType: "script",
       success: function(data){
           $("#count-items").update(data);
       }
    )
}

我真的不认为$(“#count-items”)。trigger('submit.rails')是必要的,您可以使用该帖子来传输数据。

在相应的控制器中,如有必要,应在response_to块中定义format.js,如果未定义response_to,则rails应自动尝试检索update_counter.js.erb。

因此,在您的控制器中(如有必要,请不要忘记创建相应的路由):

...
def update_counter
    @new_count = do_update_counter
end
...

在您的update_counter.js.erb视图中:

$("#count-items").html("<%= escape_javascript(render "pages/count_items", locals: {new_count: @new_count}) %>");

希望对您有所帮助。 让我知道是否需要更多说明。

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM