Dar*_*rme 3 ajax ruby-on-rails upgrade form-for ruby-on-rails-3
我无法弄清楚如何将此代码从Rails 2升级到Rails 3:
<% remote_form_for(item, :update => 'div_id') do |f| %>
...
Run Code Online (Sandbox Code Playgroud)
我试过这个:
<%= form_for :item, :remote => true, :url => { :controller => "items", :action => "create" }, :update => 'div_id' do |f| %>
...
Run Code Online (Sandbox Code Playgroud)
它会创建新项目,但无法更新<div id="div_id"></div>标记内的内容.似乎Rails 3不再支持:update遥控器的" "选项form_for.有什么建议吗?
您可以使用RJS,但也被弃用(并且有充分理由).在Rails 3+中处理此问题的简化,最佳实践方法如下(假设jQuery):
# your_view.html.erb
<div id="receiver-id"></div>
<%= form_for :some_model, :remote => true, :id => 'form-id' do |f| %>
...
<% end %>
# application.js (or any other .js loaded on the page)
$(function(){
$('#form-id').bind('ajax:success', function(xhr, data, status){
$('#receiver-id').html(data);
});
});
Run Code Online (Sandbox Code Playgroud)
所述ajax:success钩得到由jQuery的UJS称为(又名jQuery的导轨,导轨又名-UJS)远程链路/表单处理程序.你自己看.还有很多其他回调/挂钩供您使用.如果你想让它变得更加灵活,你可以使用live而不是bind绑定,并绑定到一个指示输出sidebar去向的类(例如"sidebar"),然后所有远程链接/表单都会让他们的HTML响应转到div#sidebar.