我有一个关于如何在 Ruby 中以最佳方式实现 MVC 概念的理论问题(因为我更熟悉非 MVC -thx 的提示语言,如 ASP、PHP)。
在我的示例应用程序中,您必须管理Car及其Parts。在此之后,我将(在我看来)实现以下两个控制器:
- CarsController
- PartsController
两者都有其默认操作(索引、显示、编辑、删除)。
在PartsController的“索引”动作中,所有与汽车相关的部件都会显示出来。
在CarsController的“索引”操作中,所有汽车的详细信息都会显示出来,此外,我将包括PartsController的“索引”操作的内容,将汽车 id 传递给它(或会话中的那些)。
示例布局 (CarsController/show/1)
- 汽车:Porsche GT
- 品牌:Porsche
- 型号:GT
- PS:400
- 零件(来自 PartsController/index,汽车的零件之前由 CarsController 缓存):
--- 门锁
- -- 发动机 400
我尝试使用
render "cars/index"
render :action => "cars/index"
render :template => "cars/index"
render :controller => "cars", :action => "index"
在我的 index.html.erb 模板中,但没有一个可以工作(我每次都会收到错误消息“模板丢失”)。
因为我已经遇到了很多麻烦,所以我认为我的概念/实现可能是错误的。
有什么建议可以找到更好的方法吗?
谢谢您的帮助 !
更新:
好的,这是一个更具体的示例。假设用户访问 localhost/cars/1。这是我的控制器的模板用于执行此操作:
应用程序/视图/汽车/show.html.erb
<%= form_for(@car) do |f| %>
<div class="field">
<%= f.label :brand %><br />
<%= f.text_field :brand %>
</div>
<div class="field">
<%= f.label :model %><br />
<%= f.text_field :model %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<%= render "parts/index" %>
app/view/parts/index.html.erb
<table>
<% @parts.each do |part| %>
<tr id="part-<%= part.id %>">
<td><%= part.amount %></td>
<td><%= part.price_total %></td>
</tr>
<% end %>
</table>
零件是从缓存中加载的,因此 PartsController 不需要汽车 ID(还没有)!
路线.rb
resources :cars do
resources :parts
end
然后我会收到以下错误:
{:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]} 缺少部分部分/索引。在以下位置搜索:*“D:/Dev/Ruby/MyCRM/app/views”*“C:/Ruby193/lib/ruby/gems/1.9.1/gems/datagrid-0.5.3/app/views”