2011-12-01 265 views
1

我开始on Rails的,现在我有一些问题,我不能打通,这里有一个例子:链接路径

我有一个表称为产品具有姓名,照片等,一张名为review的表格,其名称和product_id。每个产品可以有多个评论,每个评论只有一个产品。当我在索引页上选择一个产品时,它将我引导到显示视图,我将此链接放在那里<%= link_to 'Reviews', review_path(@product)%>,它将我重定向到/reviews/1,它只显示我的一个评论,并且我试图显示每个评论从产品1.

我有以下代码尝试捕获产品中的所有评论。我如何才能在@review只有product_id=1的评论?

def show_prod 
    @review = Review.find(params[:product_id]) 
    respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @review } 
    end 
end 

非常感谢,但我仍然得到同样的错误

你有一个零对象时,你没想到吧! 您可能已经预期了Array的一个实例。 评估nil时出现错误

这是从评论索引页面,当我写一个产品的所有评论。它看起来的一样从控制器@reviews没有得到任何产品和对象是零..

感谢所有帮助

+0

问题,只有谁on Rails的使用Ruby的人都听命应被标记“的Ruby-on-轨道”,而不是“红宝石”。如果你不确定你的问题是关于Ruby on Rails还是关于Ruby,那么用两个标签标记它,然后有人会删除不适用的标签。 –

回答

1

首先,在routes.rb中

resources :products do 
    resources :reviews 
end 
创造下的产品嵌套在评价

链接到它的产品。

link_to "Reviews", product_reviews_path(@product) 

然后范围的审查控制器的产品,这样的:

class ReviewsController < ApplicationController 
    before_filter :load_product 

    def index 
    @reviews = @product.reviews 
    end 

    def show 
    @review = @product.reviews.find(params[:id]) 
    end 

    protected 

    def load_product 
    @product = Product.find(params[:product_id]) 
    end 
end 
+0

非常感谢,但我仍然得到相同的错误 你有没有对象,当你没有想到它!您可能预期了Array的一个实例。评估nil时出现错误。 这是从评论索引页面,当我写一个产品的所有评论。它似乎是从控制器的@reviews没有得到任何产品和对象是零.. 感谢您的任何帮助 –