2015-01-03 87 views
1

我還是很新的軌道,但不能似乎得到這條路線的ActionController :: UrlGenerationError沒有路由匹配

show.html.erb

<%= link_to "up", vote_movie_review_path(@review, type: "up"), method: "post" %> 

耙路線上的把握

vote_movie_review POST /movies/:movie_id/reviews/:id/vote(.:format) reviews#vote 

的routes.rb

Rails.application.routes.draw do 

devise_for :users 
resources :movies do 
    resources :reviews do 
    member { post :vote } 
    end 
end 

reviews_controller.rb

class ReviewsController < ApplicationController 
before_action :set_reviews, only: [:show, :edit, :update, :destroy] 
before_action :set_movie 
before_action :authenticate_user! 
respond_to :html 

def index 
    @reviews = Review.all 
    respond_with(@reviews) 
end 

def show 

end 

def vote 
    value - params[:type] == "up" ? 1 : -1 
    @review = Review.find(params[:id]) 
    @review.add_evaluation(:votes, value, current_user) 
    redirect_to :back, notice: "thanks for the vote" 
end 
+0

請發佈完整的錯誤和堆棧跟蹤。 –

回答

1

您正在使用嵌套的路線,所以你需要通過影片對象also.use這樣vote_movie_review_path(@movies, @review, type: "up")

檢查您的路線,它顯示/movies/:movie_id/reviews/:id/vote而您調用它的方式將產生像/reviews/id與方法後,因爲它沒有定義任何路線。

+0

這就是我想念的,謝謝。 – Jesse

+0

如果它解決了你的問題,你可以接受答案.. –

相關問題