我制作了一个简单的测试应用来审核电影。我在整个申请过程中遇到此错误。 我已经在模型中设置了继承(使用API用于电影数据)和其他标准的东西,但我不知道为什么我会收到此错误。 例如,访问此网址 -
...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
答案 0 :(得分:1)
您永远不会在控制器的新操作中设置实例变量@movie
。如果之前没有设置,则每个实例变量都返回nil。因此@movie
为零,预计会出现此错误。
您应该注意的另一件事是URL。
URL路径应具有数字影片ID,而不是%23<Tmdb::Movie:0x00000002d30728>
。这可能会使您无法轻松地在控制器中找到您想要的电影。
如果它是23例如你可以简单地说:
@movie = Movie.find(params[:id])
因为/ movies / 23 / more_reviews / new将23放入params[:id]
希望这可以帮助您找出问题。
答案 1 :(得分:0)
如错误所示,您尝试在nil
(未声明的)对象上调用方法
在您的情况下,未声明的对象是@movie
,并且意味着您必须以某种方式声明它。解决方案是创建对象(通常使用ActiveRecord
方法)。如Erez所述,您可以使用:
@movie = Movie.find(params[:id])