2009-08-18 113 views
0

我在Rails中遇到了问题,我想在每个类别中的产品显示在单独的页面上,当用户点击正确的链接时,类别和产品具有HABTM关系,我可以看到结果但我不想在默认页面(路线)中显示它们。我应该创建一个新的路线规则,或者这可以在控制器和视图中实现而无需编辑路线?在新的页面中显示产品

这是类别show.html.erb代码:

<h3><%=h @category.name %></h3> 
<div id="category_desc"> 
    <%=h truncate(@category.description.gsub(/<.*?>/,''),80) %> 
</div> 
<div id="categories_edit_nav"> 
    <%= link_to "Edit" , edit_category_path(@category) %> 
    <%= link_to "Remove" , category_path(@category) , :confirm => "Are you really want to delete #{@category.name} ?" , :method => "delete" %> 
</div> 
<div id="category_nav"> 
    <%= link_to "Create a new Category" , new_category_path %> 
</div> 

在这里,我可以创建类别控制器等的方法:

def show_products 
    @products_in_category = @category.products.find(:all)  
    end 

而且在显示视图中使用它,但我想在另一个视图中使用它,如show_products。我应该为此方法创建路线吗?

+1

嗯...没有任何关于平台,语言,软件等的细节...怎么样是的? – 2009-08-18 18:55:26

+0

对不起,我没有足够的细节甚至开始回答。你能否提供更多信息? – 2009-08-18 18:55:34

+0

你是什么意思的“我不想让他们在默认页面(路线)”?给一些代码并尝试解释你的问题,因为我不明白 – klew 2009-08-18 19:05:48

回答

0

你应该使用嵌套的资源:

map.resources :categories, :has_many => :products 

这将创建一个途径,如/分类/ 1 /产品,将直接查询到产品的控制器和索引操作,您可以使用PARAMS [:CATEGORY_ID]到呈现正确的结果集。

在试验路线时,请运行耙路线以查看结果,并参阅http://api.rubyonrails.org/classes/ActionController/Resources.html了解更多详细信息。

相关问题