я получаю следующее сообщение об ошибке, когда upvoting или вниз голосования мой пост:Получить Маршруты Сломанный
Routing Error
No route matches [GET] "/posts/181/up-vote"
Избиратель Частичное:
<% if policy(Vote.new).create? %>
<div class="vote-arrows pull-left">
<div>
<%= link_to " ",
post_up_vote_path(post),
class: "glyphicon glyphicon-chevron-up #{(current_user.voted(post) && current_user.voted(post).up_vote?) ? 'voted' : '' }", method: :post do %>
</div>
<div>
<strong><%= post.points %></strong>
</div>
<div>
<%= link_to " ",
post_down_vote_path(post),
class: "glyphicon glyphicon-chevron-down #{(current_user.voted(post) && current_user.voted(post).down_vote?) ? 'voted' : '' }", method: :post do %>
</div>
</div>
<% end %>
Голосов Контроллер:
class VotesController < ApplicationController
before_action :load_post_and_vote
def up_vote
update_vote!(1)
redirect_to :back
end
def down_vote
update_vote!(-1)
redirect_to :back
end
private
def load_post_and_vote
@post = Post.find(params[:post_id])
@vote = @post.votes.where(user_id: current_user.id).first
end
def update_vote!(new_value)
if @vote
authorize @vote, :update?
@vote.update_attributes(value: new_value)
else
@vote = current_user.votes.build(value: new_value, post: @post)
authorize @vote, :create?
@vote.save
end
end
end
Я определил метод вверх и вниз в пределах контроллера голосов. Однако они вызываются через маршруты POST. Должен ли я использовать его как: put or: down_vote ???
Rails.application.routes.draw do
get 'comments/create'
devise_for :users
resources :users, only: [:update]
resources :topics do
resources :posts, except: [:index]
end
resources :posts, only: [] do
resources :comments, only: [:create, :destroy]
resources :favorites, only: [:create, :destroy]
post '/up-vote' => 'votes#up_vote', as: :up_vote
post '/down-vote' => 'votes#down_vote', as: :down_vote
end
get 'about' => 'welcome#about' # Redirecting the about variable to a welcome/about
get 'newpost' => 'posts#new'
root to: 'welcome#index'
end
Вы должны убедиться, что метод запроса соответствует вашему маршруту. Если вы определили маршрут как PUT, вам нужно убедиться, что вы сделаете запрос PUT. –
Когда я рейка маршрутов, маршруты являются POST-запросом –
вы можете добавить route.rb – coderhs