【问题标题】:rails load partial from jquery load requestrails 从 jquery 加载请求中加载部分内容
【发布时间】:2014-07-24 11:01:39
【问题描述】:

当用户单击我的应用程序中的一个复选框时,我正在通过 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>

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

【问题讨论】:

  • 我的表单已经是远程操作中提到的
  • 在回调中你可以写update.js.erb, `$('#count-items').html("");
  • 这行得通 - 但不知何故 foo 在它被调用时不是最新的。看起来这需要一些延迟。
  • 分享确切的视图/控制器

标签: jquery ruby-on-rails


【解决方案1】:

以下是我处理这种交互的方式。 这可能不是唯一的解决方案,但对我来说效果很好。 在您看来,当您希望通过 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') 是必要的,你可以使用帖子来传输你的数据。

在相应的控制器中,如果需要,你应该在respond_to块中定义一个format.js,如果没有定义respond_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}) %>");

我希望这会有所帮助。 如果您需要更多解释,请告诉我。

问候

【讨论】:

  • 虽然我坚持使用 submit.rails 解决方案,但它仍然有效。我只是创建了一个相关的 .js 文件并将 format.js 放入我在相应控制器中的创建逻辑中。感谢您带我走上正确的道路!
猜你喜欢
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
相关资源
最近更新 更多