嗨,我是新手]
实际上投票是可以的,但是直到刷新整个页面后它才更新数据
这是我投票时的错误
这是我的代码
routes.rb
resources :posts do match :vote, via: [:post, :delete], on: :member end
controller.rb
class PostsController < ApplicationController before_action :set_post, only: [:show, :edit, :update, :destroy, :vote] respond_to :js, :html, :json def vote @post = Post.find(params[:id]) if request.post? @post.upvote_from current_user elsif request.delete? @post.downvote_from current_user end respond_to do |format| format.html { redirect_to :back } format.js end end
vote.js.erb
$("<%=j @post.id %>").html("<%=j render partial: "posts/vote", locals: { post: @post } %>");
_ vote.html.erb
<% voted = current_user.voted_for? post %> <% styling = voted ? "" : "un" %> <% arrow = voted ? "up" : "down" %> <% method = voted ? :delete : :post %> <%= link_to vote_post_path(post), method: method, remote: true, class: '# {styling}like_post', id: post.id do %> <button type="button" class="btn btn-info" aria-label="Left Align"> <i class="fa fa-arrow-<%= arrow %>"></i> <span class="badge vote_count"><%= post.get_upvotes.size %></span> </button> <% end %>
show.html.erb
<%= render partial: "vote", locals: { post: @post } %>
application.js
//= require rails-ujs
//= require turbolinks
//= require_tree .
//= require jquery3
//= require popper
//= require bootstrap-sprockets
嗨,我是新手,实际上是可以投票的,但是直到刷新整个页面后才更新数据。这是我投票时的错误,这是我的代码route.rb资源:posts do ...
$("<%= @post.id %>").html("<%=j render partial: "posts/vote", locals: { post: @post } %>");
如果不是脚本/文本,则无需转义。假设帖子的ID为5,因此出现错误