2014-02-06 172 views
0

我做了一个简单的测试应用程序审查电影。我在整个应用程序中遇到这个错误。 我已经在模型(使用API​​的电影数据)和其他标准的东西设置继承,但我不知道为什么我得到这个错误。 例如,访问这个网址 -未定义的方法`movie_reviews'为零:NilClass

...movies/%23<Tmdb::Movie:0x00000002d30728>/movie_reviews/new 

我得到的错误

app/controllers/movie_reviews_controller.rb:17:in `new' 

def new 
@movie_review = @movie.movie_reviews.new 
end 

这里有GH源代码:https://github.com/Xantax/sample_movies

+1

是@movie nil?另外,你确定你在这里正确使用新的? –

回答

1

你永远不设置实例变量@movie中的新动作你控制器。如果以前没有设置过,则每个实例变量返回nil。所以@movie是零,预计你会得到这个错误。

你应该注意的另一件事是URL。 URL路径应该有数字电影ID而不是%23<Tmdb::Movie:0x00000002d30728>。这可能会阻止您轻松地在控制器中找到您想要的电影。 如果它例如已经23你可以只是简单:

@movie = Movie.find(params[:id]) 

因为/电影/ 23/more_reviews /新放23到params[:id]

希望这可以帮助您找出问题。

0

由于错误提示,你要调用一个nil(未申报)对象

上的方法在你的情况下,未申报的对象是@movie,并且将意味着你必须以某种声明。解决这个问题的方法是创建对象(通常使用ActiveRecord方法)。如Erez所述,您可以使用:

@movie = Movie.find(params[:id]) 
相关问题