私は、MVCの概念をRubyで最良の方法で実装する方法について理論的な質問をしました(ASP、PHPなどのヒント言語の非MVC -thxに精通しているため)。
私のサンプルアプリでは、車とその部品を管理する必要があります。これに続いて、私は(私の意見では)次の2つのコントローラーを実装します
:-CarsController
- PartsController
どちらにもデフォルトのアクション(インデックス、表示、編集、削除)があります。
PartsControllerの「インデックス」アクションでは、車のすべてのリンクされたパーツが表示されます。
CarsControllerの「インデックス」アクションには、すべての車の詳細が表示されます。さらに、車のID(またはセッション中の車)を渡すPartsControllerの「インデックス」アクションのコンテンツを含めます。
レイアウト例(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にアクセスするとします。これを行うためのコントローラーのテンプレートは次のとおりです。
app / view / cars / 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 / components / 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"