ボタンを押したときにパーシャルを更新するのに苦労しています。ページ全体ではなく、単にdivを更新したい。これが私が見ているものです:
<div id="ajax">
<%= render 'layouts/confessions' %>
</div>
次に、私の部分_confessions.html.erb
には、いくつかの基本的なhtmlとこれに似た2つのボタンがあります。
<%= 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
divを更新するだけでなく、リダイレクトされています(idは異なる場合があります)。私は何が間違っているのですか?私は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