2014-02-06 69 views
0

應用程序有2個簡單模型,我使用TMDb api。電影& MovieReviews。當我嘗試訪問此URL時無法找到沒有ID的電影

localhost:3000/movies/%23<Tmdb::Movie:0x007ff0608f4398>/movie_reviews/new 

我應該看到提交評論的表單,我收到錯誤。此外,該網址似乎有點不好。我如何獲得電影ID?它還顯示

parameters: 
{"movie_id"=>"#<Tmdb::Movie:0x007ff0608f4398>"} 

,這是MovieReviewsController#新

def new 
    @movie = Movie.find(params[:id]) 
    @movie_review = @movie.movie_reviews.new 
end 

Source code

+0

你可以添加你的new.html.erb內容請 – franchez

+0

https://github.com/Xantax/sample_movies – Absurdim

+0

我想問題是在你的_from部分。它已被auto_generated?還是你自己編碼? for info請閱讀form_for api doc http://guides.rubyonrails.org/form_helpers.html 如果這對你有幫助,將安裝moviedb gem來重現和修復問題 – franchez

回答

0

請更換

<%= link_to "Review it!", new_movie_movie_review_path(@movie) %> 

通過

<%= link_to "Review it!", new_movie_movie_review_path(@movie.id) %> 

問題是你不引用影片ID,但影片對象。這就是爲什麼你有你奇怪的URL參數。

一旦更改,您將不得不調整您的MovieReviewsController。

但請小心,我看到你正在嘗試使用「電影評論」。當我查看你提供的關於Tmdb API的鏈接時,我可以閱讀「缺少資源:評論」。

0

我覺得你有幾個問題:

localhost:3000/movies/%23<Tmdb::Movie:0x007ff0608f4398>/movie_reviews/new這不會有任何效果。 Tmdb::Movie:0x007ff0608f4398是類實例的內部對象ID。該網址應該看起來像localhost:3000/movies/1/movie_reviews/new。這將允許你添加一個新的評論到電影ID:1

在你的config/routes.rb文件中,你已經明確地聲明瞭幾個URL並在其他資源上面添加了根路由。根路由應始終是最後聲明的路由。另外get "movies/show"get "movies/index"路由已經由resources :movies處理,因此您可以刪除這些路由。

路由文件應該是這樣的:

SampleMovies::Application.routes.draw do 
    resources :movie_reviews 
    resources :movies do 
    resources :movie_reviews 
    end 

    root 'movies#index' 
end 

要查看應用程序的所有avalaible路線。轉到項目目錄並鍵入:rake routes它將顯示所有可用的URL,包括必需和可選參數。

PS看着你的代碼的其餘部分,我強烈建議你看看:http://guides.rubyonrails.org/getting_started.html其關於rails基礎知識的最佳教程。

+0

我知道URL應該看起來像那樣,但我如何得到正確的電影「ID」?這是在演出文件好嗎? - <%= link_to「查看它!」,new_movie_movie_review_path(@movie)%> – Absurdim

相關問題