Нет подходящих маршрутов {: action => "destroy" - PullRequest
2 голосов
/ 14 июня 2011

Я получаю следующую ошибку при попытке уничтожить голос пользователя за «вклад»:

No route matches {:action=>"destroy", :controller=>"contribution_votes", 
                  :id=>#<ContributionVote contribution_id: 8245, user_id: 40>}


Но понятия не имею, почему. Вот кнопка отправки запроса

<%= button_to "undo voteup!", 
        contribution.contribution_votes.find_by_user_id(current_user), 
        :method => :delete, :class => 'contribution_vote undo' %>


Вот действие «уничтожить» в контроллере:

def destroy
    @vote = current_user.contribution_votes.find(params[:id])
    @vote.destroy


    @contribution = Contribution.find_by_id(@vote.contribution_id)


    @contribution_decrement = @contribution.decrement(:votes)

if @vote.destroy and @contribution_decrement.save
    respond_to do |format|
    format.html {redirect_to :back}
    format.js
 end 
 else 
        redirect_to :back         

 end
end


(некоторая избыточность здесь, я знаю, но она должна быть заполнена позже)

А вот настройка в маршрутах.rb

resources :contribution_votes, :only => [:create, :destroy]

Кто-нибудь может помочь? Я подозреваю, что ответ очевиден, но я не могу найти его нигде на SO.

1 Ответ

1 голос
/ 14 июня 2011

Измените ваш код на (думаю, это поможет):

<%= button_to "undo voteup!", 
    contribution_votes_path(current_user.id),
    :method => :delete, :class => 'contribution_vote undo' %>

.. кстати: наберите rake routes в своей консоли и убедитесь, что вы используете правильный маршрут (я могу ошибаться).

...