0

我正在将站点从 Rails 2 移动到 Rails 3,并且需要用 JQuery 替换以下不推荐使用的方法:

periodically_call_remote 
button_to_remote

在视图中,有一个按钮,按下时每 12 秒执行一次回调:

#index.html.erb (Rails 2.2.2)

<%= periodically_call_remote(:url => { :action => 'check' }, :frequency => '12', :update => 'log') %>

[...]

<div id="generate_test_btn"><%= button_to_remote "Generate Test Order", 
                        :url => { :action => "check", :should_generate => "YES" },
                        :update => "log" %>
</div>

[...]


#controller
def check

    [...Generate content...]

    render :partial => "log" and return

end

我的部分实现
不知道如何将button_to代码粘合到 JQuery AJAX 东西上

 ### index.html.erb  (Rails 3.1)
   <script>


$(document).ready(function(){

    $("#generate_test_button").click(function() {

        setInterval(updateTest,12000);
      });

    });

  function updateTest(){
    $("#log").load("???"); 
  }

</script>


    <%= button_to "Generate Test Order", 
                  { :controller => :test, :action=> :check, :should_generate => "YES" }, 
                  { :remote => true } 
                 %>
4

1 回答 1

1

在 rails 3 你有不显眼的 javascript

所以基本上,您创建的任何链接:remote => true都会调用它,controller#action但以 js.erb 结尾

所以在你的情况下,按钮会调用控制器check中的动作test

如果您创建一个 check.js.erb 并将其放在views/test文件夹中并在里面

alert("UJS!"); 

按下该按钮后它应该会弹出

另请注意,您应该拥有 rails-ujs gem 并在 application.js 清单中需要它

于 2013-04-26T14:46:52.750 回答