2012-09-20 80 views
2

我有Ajax請求的一個問題:軌道簡單的Ajax請求

在我的應用程序

我試圖配置一個簡單的排名系統,而我把它,但煥我點擊等級按鈕 - 我重新加載頁面並且等級被刷新。

幫助我意識到,在AJAX:

我做到這一點:

posts/show.html.erb我有:

<div id='vote_update'> 
     <%= render 'vote/update' %> 
    </div> 

vote/_update.html.erb我有:

<% if can? :update, Vote %> 
    <%= form_for([@post, @post.vote], remote: true) do |f| %> 
... 
<%= f.submit "vote" %> 

vote/update.js.erb我有:

$('#vote_update').html("<%= j render('vote/update') %>"); 

和vote_controller.rb我有:

def update 
    post = Post.find(params[:post_id]) 
    vote = post.vote 
... 
    respond_to do |format| 
     if vote.save 
      format.html { 
      redirect_to post_path(post), 
      :notice => "You vote counted!" 
      } 
      format.js 
     end 
    end 
end 

如果我刪除romete:真正的 - 一切正常(頁面刷新,我看到(:通知)「您投票計數!「和評級更新,但如果我把遠程:真正的回來,我什麼也沒有看到(在螢火蟲控制檯中的一些錯誤) - 但是當我重新加載頁面 - ratign更新,nd我看到norml結果 - 我想我犯了一些錯誤重定向或我不知道

請幫助

+0

你的ajax代碼將在format.js塊中。你可以在那裏更新顯示排名的HTML。 – Rubyman

回答

0

您的Ajax代碼會在format.js塊。你可以在那裏更新顯示排名的HTML。

+0

我不太明白你的意思,你描述了我想在問題中做什麼 - 當我點擊提交btn時,我發送一個投票請求/update.js.erb和那裏我試圖更新我的$('#vote_update') - div塊,但在我的問題中,我有一些錯誤,我不知道在哪裏 –

+0

哎呀,Dimitry我錯過了那部分,在你的更新.js.erb你可以有js更新排名,也顯示flash消息 – Rubyman

+0

不,你是對的,我渲染 - 但渲染不是我需要=)謝謝=)) –

0

變化

respond_to do |format| 
    if vote.save 
     format.html { 
     redirect_to post_path(post), 
     :notice => "You vote counted!" 
     } 
     format.js 
    end 
end 

到 如果vote.save 的respond_to做|格式|

 format.html { 
     redirect_to post_path(post), 
     :notice => "You vote counted!" 
     } 
     format.js 
    end 
end 

不知道,雖然

+0

沒有錯,沒有任何變化(但現在的結果是不保存) –