-1
私はRailsアプリケーションで "acts_as_votable"という宝石を使用しているので、ユーザーは投稿に投票できます。それはすべて正常に動作します。投稿に投票するためのAjax(ページの更新を停止する)
しかし、あなたはupvoteまたはポスト、ページ全体の更新をdownvote場合。 Ajaxを実装することでこれを変更したいと思います.Ajaxはページ全体をリフレッシュしないための理想的なソリューションです。これは私がこれまで持っているものです。
routes.rbを
resources :posts do
member do
put "like", to: "posts#upvote"
put "dislike", to: "posts#downvote"
end
end
post.rb
class Post < ActiveRecord::Base
belongs_to :user
acts_as_votable
validates :user_id, presence: true
validates :content, presence: true, length: { maximum: 320,
too_long: "%{count} characters is the maximum allowed" }
default_scope -> { order(created_at: :desc) }
end
posts_controller.rb
class PostsController < ApplicationController
def index
..stuff here..
end
def new
..stuff here..
end
def create
..stuff here..
end
def destroy
..stuff here..
end
def upvote
@post = Post.find(params[:id])
@post.upvote_by current_user
redirect_to :back
end
def downvote
@post = Post.find(params[:id])
@post.downvote_by current_user
redirect_to :back
end
private
def post_params # allows certain data to be passed via form.
params.require(:post).permit(:user_id, :content)
end
end
explore.html.erb
<% if @posts.each do |p| %>
<div class="panel-body">
<p class="post-content"><%= auto_link(p.content, :html => { :target => '_blank' }) %></p>
<%=link_to like_post_path(p), method: :put, class: 'btn btn-default btn-sm' do %>
<span class="glyphicon glyphicon-chevron-up"></span> like <%=p.get_upvotes.size%></td>
<% end %>
<%=link_to dislike_post_path(p), method: :put, class: 'btn btn-default btn-sm' do %>
<span class="glyphicon glyphicon-chevron-down"></span> dislike <%=p.get_downvotes.size%></td>
<%end%>
</div>
<% end %>
私はAjaxに変換する方法を教えてください。
を私はVです問題を実際に解決する努力を示さず、ちょうどコード釣りであるため、この質問を話題にはならないようにしています。 – max