CRUD從索引頁。Rails:編輯/更新後如何讓ajax刷新索引?
我知道有寶石可以使這個容易,但如果可能的話,要儘量避免。
在Index.html.erb
- 模擬_newsfeeds局部成< UL ID =上index.html.erb
「feedsNews」> - 部分形式(:創建和:編輯正在使用相同的形式)
- 當用戶點擊「編輯」上的新聞源BTN,我追加部分形式的新聞源
問題
編輯/更新變化正在作出...不幸的是,我似乎無法得到AJAX:成功重裝_newsfeeds部分位於index.html.erb。如果是一些愚蠢的,我很抱歉......
NEWSFEEDS_CONTROLLER
def index
@newsfeeds = Newsfeed.all
@newsfeed = Newsfeed.new
@newsfeeds = Newsfeed.order("position") #for Sortable
respond_to do |format|
format.html # index.html.erb
format.json { render json: @newsfeeds }
format.js
end
end
def update
@newsfeed = Newsfeed.find(params[:id])
respond_to do |format|
if @newsfeed.update_attributes(params[:newsfeed])
format.html { redirect_to newsfeeds_url, notice: 'Updated' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @newsfeed.errors, status: :unprocessable_entity }
end
end
end
index.html.erb
<div>
<div id="spinner" style="display:none;"></div>
<ul id="feedsNews" class="showList" data-update-url="<%= sort_newsfeeds_url %>" >
<%= render :partial => @newsfeeds %>
</ul>
</div>
index.js.erb的
$('#<%= dom_id(@newsfeed, :edit) %>')
.bind('ajax:send', function(){
$('#spinner').show();
})
.bind('ajax:success', function() {
$('#spinner').hide();
$('#feedsNews').innerHTML ('<%= escape_javascript(render(@newsfeeds)) %>')
})
任何幫助將不勝感激。
---------------- UPDATE --------------------
改成了這,它工作... sorta ... index.js.erb好像它是在更新動作重定向之前發射的,所以螢火蟲給了我一個無窮無盡的'微調'index.js.erb GET請求
$.ajax({
complete: function() {
$('#feedsNews').html('<%= escape_javascript(render :partial => @newsfeeds) %>');
alert('Changes Saved!');
}
});
感謝您的幫助。 – econduck
我能夠得到它與以下工作,但JS似乎在更新行動,這是奇怪的重定向之前觸發。如果我弄清楚發生了什麼'$ .ajax({0} .ajax({0}){('#feedsNews')。html('<%= escape_javascript(render:partial => @ newsware)%>'); \t \t alert('Changes Saved!'); \t} }); 「 – econduck