2014-02-10 30 views
0

我尝试使用下面的动作,以显示产品在我的ProductsController:但是我越来越显示产品索引操作

<% @products.each do |product| %> 
    <p> 
     <b>Product:</b> 
     <%= product.name %> 
    </p> 
<% end %> 

def index 
    @products = Products.find(params[:id]) 
end 

而且我index.html.erb出现以下错误:

ActiveRecord::RecordNotFound (Couldn't find Products without an ID) 

我对轨道很陌生,所以我不确定我做错了什么。

回答

1

对于描述你想要做的事情,你应该更加谨慎。对于其他人如何理解你,以及你如何看待你在做什么都会产生影响。

也就是说,您使用的是index动作,这是用来列出或提供指数记录,但你正在试图获得一个单品(find(id))。这些事情是不一致的。即使您的变量名称与您正在加载的数据不一致。

def index 
    @products = Product.all 
end 

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

在未来,你应该更仔细地读一点读你得到的错误信息(这一个直上告诉你PARAMS没有一个id为这次行动,cluing你变成什么继续)。

+0

感谢您的回答,并对所有的误解抱歉。但是,如果我想识别在索引视图中显示的产品,我该怎么办?我想说的是,假设我有以下div“

Product 1

”。我怎样才能确定这个产品的id = 1,这样当我点击它时,属于它的所有属性将在show动作中正确显示。 –

+0

你让所有的条款都混在一起。控制器中的方法(在域模型中称为“操作”)负责检索视图呈现所需的信息。你对这些部分如何一起工作的心理模型相当扭曲,而且我很难帮助StackOverflow。我建议您再次阅读[Rails Guides](http://guides.rubyonrails.org/)以尝试将自己整理出来。 – coreyward