0

現在、1つのSITEMANAGERページから複数のモデルを管理しています。私には次の関係があります。

Sites -> Buildings -> Meters -> Values

各「サイト」アイテムの横に「編集|削除|建物の追加」があります各「建物」アイテムの横に「編集|削除|メーターの追加」があります各「メーター」アイテムの横に「編集|削除|値の追加」があります「値」アイテム「編集|削除」があります

この時点で、このページを管理する「SiteManagerController」と呼ばれるフランケンシュタインのコントローラーが1つあります。私は単に次のようなメソッド(およびroutesファイル内の対応するルート)を持っています:

add_site
add_building_to_site
add_meter_to_building

delete_site
delete_building
delete_meter

しかし、私が疑問に思っているのは、「SiteManager」ページとコントローラーに適切なRJSファイルをレンダリングできる一方で、既存のアイテムコントローラーのCRUDメソッドを使用する品質メカニズムがあるかどうかです。

何らかの方法で元のコントローラーにルーティングでき(すべてのメソッドを手動で書き直す必要がないように)、作成後にRailsが制御を(視覚的にだけでなくコンテキスト的にも)「SiteManager」コントローラーにリダイレクトできると便利です。削除します。私はフォームを扱っているのではなく、単にINDEXページと複数の「link_to_remote」を扱っていることに注意してください。

私はおそらく間違った質問をしているので、それを考慮してください...とにかく、私は提案を受け入れます。

一番。

4

1 に答える 1

0

既存のアイテム コントローラーの CRUD メソッドを絶対に使用できます。任意link_to_remoteの URL を指定すると、指示した html が挿入されます。でデフォルト ルートを保持している限りroutes.rb、すべて正常に動作するはずです。これにより、ユーザーは SiteManager ページにとどまりますが、バックグラウンドで RESTful ルートと対話します。

link_to_remote "Edit", :update => "site_#{site.id}",
     :url => site_url(site), :method => :put
link_to_remote "Add Building", :update => "new_building", :url => buildings_url,
     :method => :post

SitesController < ApplicationController
  def update
    @site = Site.find(params[:site_id])
    @site.update_attirbutes!(params[:site_id])
    render :partial => @site
  end
end

BuildingsController < ApplicationController
  def create
    @building = Building.create(params[:building])
    render :partial => @building
  end
end
于 2009-06-23T04:42:33.527 に答える