我有一个 add_new_button 它将在数据库中创建一个新对象并使用 ajax 显示更新的记录。代码运行良好,直到我从 2.4 => 3.0.0.rc 更新 Mongoid(捆绑更新)。
现在的问题是,当单击按钮时,数据库会更新为新记录,但页面不会更新。我检查了 ajax 请求,它确实呈现了部分页面,但没有新添加的记录。而第二次点击会呈现之前添加的记录,但没有最新的记录。有任何想法吗?
更新了代码片段
它呈现 _desktop.html.erb
#index.html.erb
<div id=columns>
<%= render :partial => "desktop", :locals => { :items => @items } %>
</div>
*_desktop.html.erb* 由视图呈现,也用于 ajax 更新(这是未使用 ajax 更新的页面)
#_desktop.html.erb
<%= form_tag(new_path, :remote => true) do %>
<div class="m-body">
<p>Select an item</p>
<%= select_tag "user_items", options_from_collection_for_select(services, "id", "name", :prompt => true) %>
</div>
<div class="m-footer">
<a href="#" class="btn">Close</a>
<%= submit_tag "Confirm", :id => "add-item_btn" %>
</div>
<% end %>
创建新项目没问题,它通过json呈现_desktop.html.erb
# items_controller.rb
def new
@user.items.create!(
handle: 'name',
content: 'body'
)
respond_to do |format|
format.json { render :json => {:sucess => true, :html => (render_to_string '_items.html.erb', :locals => { :items => @items })} }
format.html {}
end
end
但是,它不会使用新添加的项目获取更新的 html..
<%# new.js.erb %>
$('#add-item_btn').live('ajax:success', function(event, data){
if(data.success == true) { $('#columns').html(data.html); }
});