rails ajax get call wrong action直到页面刷新后

时间:2014-03-22 01:20:39

标签: jquery ruby-on-rails ajax button refresh

如图所示,'import'是控制器中的操作。这将加载_list.html.erb中的数据网格,然后将_list重新插入_index.html.erb。排序按钮(ajax)位于网格的顶行,也在_index中重新插入_list。排序按钮工作正常,但仅在页面刷新后。在加载后立即使用时,按钮会使用'id = import'调用'show'操作。移动按钮$ get调用_list.html.erb不起作用。

我遇到了一些鲜为人知的jQuery / Ajax技巧,它更明确地为调用分配方法/操作。这不是一个肯定的解决方案,但值得一试,如果我能再次找到它的话)任何想法......都在吗?

... _index.html.erb

<%= form_tag import_mtab1lets_path, :method => 'post', :id => "import_mtab1lets" do %>

提交被捕获并且使用了ajax ......

$.post("/mtab1lets/import", $("#import_mtab1lets").serialize(), null, 'script');
return false;

排序按钮操作......

$(document).ready(function () {
  $("#tablets th a, #tablets .pagination a").on("click", function() {
  $.get("/mtab1lets/list", null, null, "script");
  return false;
  });
});

在路线中,我用这种方式订购了东西......

match "/mtab1lets/show/:id" => "mtab1lets#show", via: 'get'
match "/mtab1lets/list" => "mtab1lets#list", via: 'get'  

resources :mtab1lets do
  collection { post :import }
end

match "/mtab1lets/:id" => "mtab1lets#update", via: 'post'

resources :mtab1lets

1 个答案:

答案 0 :(得分:0)

我可以自己回答。 _index是_list的父页面。排序按钮的绑定在_index,而不是_list。因此,当alist由ajax重新加载时,不会调用_index中的绑定。它需要是)我扩展了ajax调用,重复了.done中的绑定。这个小小的笨蛋已经在各地得到了回应。

$.post( "/mtab1lets/import", $("#import_mtab1lets").serialize(), null, 'script', function() {
})
.done(function() {
    $("#tablets th a, #tablets .pagination a").on("click", function() {
        $.get("/mtab1lets/list", null, null, "script");
        return false;
    });
})
.fail(function() {
    alert( "ajax load error" );
});