来自索引页面的CRUD 。
我知道有一些宝石可以让这件事变得简单,但如果可能的话,我想避免。
在 Index.html.erb
上 - 在 index.html.erb 上将 _newsfeeds 部分渲染到 <ul id="feedsNews" >
- 部分表单(:Create 和 :Edit 使用相同的表单)
- 当用户在新闻源上单击“编辑”按钮时,我将部分表单附加到新闻源
问题
正在编辑/更新更改...不幸的是,我似乎无法获得 ajax:success 以重新加载 index.html.erb 上的 _newsfeeds 部分。如果这是愚蠢的事情,我道歉......
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)) %>')
})
任何帮助将非常感激。
- - - - - - - - 更新 - - - - - - - - - -
把它改成这个,它可以工作......排序...... index.js.erb 似乎在更新操作重定向之前触发,所以萤火虫给了我一个无尽的'spinner' index.js.erb获取请求
$.ajax({
complete: function() {
$('#feedsNews').html('<%= escape_javascript(render :partial => @newsfeeds) %>');
alert('Changes Saved!');
}
});