データベースに新しいオブジェクトを作成し、更新されたレコードをajaxで表示するadd_new_buttonがあります。Mongoid を 2.4 => 3.0.0.rc (バンドルの更新) から更新するまで、コードは正常に機能します。
問題は、ボタンをクリックすると、データベースが新しいレコードで更新されますが、ページは更新されません。ajax リクエストを確認したところ、部分的なページがレンダリングされましたが、新しく追加されたレコードはありませんでした。2 回目のクリックでは、以前に追加されたレコードがレンダリングされますが、最新のレコードはありません。何か案は?
コード スニペットで更新
_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); }
});