2013-08-17 49 views
0

在我的Web应用程序中,用户可以选择某个实体的某些实例。例如在类BubbleGum,现在用户可以通过他们的adressing标识符选择BubbleGum某些情况下:现在如何在Rails中显示模型的所有实例?

gums/details?show=3532667 

,另外我也想使其能够显示所有BubbleGums。为此,我已介绍了使用*识别所有

gums/details?show=* 

这工作很好,至今的惯例,但往往我要补充一点的代码来处理*选择。有没有一种很好的方式来表示Ruby和/或Rails中的所有实例对象?

我曾想过简单地使用代表所有其他泡泡糖的专用符号,常量或类BubbleGum的实际对象。

+0

'BubbleGum.all'?用'BubbleGum.all.each ...'迭代它们......' – lurker

+0

我同意。控制器代码怎么样,检查是否使用了'*',然后拨打电话?我希望找到一个不那么胆小的解决方案,所以我可以避免整个if子句。 –

+0

执行此操作的“正常”方法是仅使用另一个路由来执行所有操作的列表(索引),而不是显示。什么是激励'*'方法?但是,是的,在'show'的控制器中,您可以查找'params [:show]''*'的值。你可以显示你的控制器代码为你的'细节'?这将有所帮助。 (有一个名为“show”的参数让这个对话有点混乱......;))。 – lurker

回答

1

要在Rails应用程序中显示所有实体,通常我们使用索引页面。

bubble_gums_controller.rb

def index 
    @bubble_gums = BubbleGum.all 
end 

的意见/ bubble_gums/index.html.erb

<% @bubble_gums.each do |bubble_gum| %> 
    <tr> 
    <td><%= bubble_gum.name %></td> 
    <td><%= bubble_gum.price %></td> 
    </tr> 
<% end %> 

请参阅本作进一步的细节。

http://guides.rubyonrails.org/getting_started.html#listing-all-posts

1

我想你要使用的查询字符串PARAM表演。 所以,你可以尝试在你的牙龈控制器:

def details 
    if params[:show] == "*" 
     @bubble_gums = BubbleGum.all 
     # ... 
    elsif params[:show] 
     @bubble_gum = BubbleGum.find(params[:show]) 
     # ... 
    else 
     render :status => 404 
    end 
end 
相关问题