我有一個困難的時間試圖讓我的部分刷新按鈕。我只想刷新div,而不是整個頁面。下面是我的看法:Ruby On Rails:Ajax刷新部分不工作
<div id="ajax">
<%= render 'layouts/confessions' %>
</div>
然後在我的部分_confessions.html.erb
,我有一些類似這樣的基本的HTML和兩個按鈕:
<%= form_tag({ :controller => :confessions, :action => :upvote, :id => conf.id }, { :method => :put }) do %>
<%= submit_tag 'Like' %>
<% end %>
我confessions_controller.rb:
def upvote
@confession = Confession.find(params[:id])
Confession.increment_counter :upvotes, @confession
respond_to do |format|
format.js
end
end
最後,upvote.js.erb
:
$('#ajax').html("<%= escape_javascript(render(:partial => 'confessions')).html_safe %>");
提交到我的數據庫的行爲正在工作,但該頁面現在重定向到/upvote?id=9
(id可能不同),而不是刷新div。我究竟做錯了什麼?我是新來的Rails,所以我可能失去了一些東西完全明顯...
編輯:這是我的文件夾結構:
我的觀點:views/pages/home.html.erb
我的部分:views/layouts/_confessions.html.erb
我控制器:controllers/confessions_controller.rb
我js.erb文件:views/confessions/upvote.js.erb
後rake routes
confessions GET /confessions(.:format) confessions#index
POST /confessions(.:format) confessions#create
new_confession GET /confessions/new(.:format) confessions#new
edit_confession GET /confessions/:id/edit(.:format) confessions#edit
confession GET /confessions/:id(.:format) confessions#show
PUT /confessions/:id(.:format) confessions#update
DELETE /confessions/:id(.:format) confessions#destroy
upvote /upvote(.:format) confessions#upvote
downvote /downvote(.:format) confessions#downvote
root / pages#home
謝謝,這解決了我的問題! – 2013-02-23 21:01:27
我很高興它有所幫助。 – 2013-02-25 07:24:51