2012-03-01 9 views
2

私はレール3のアプリケーションをリファクタリングしています。そして、ajaxベースのサブコンポーネントをどのように処理するのが最適かを知りたいですか?レール3のajaxベースのサブコンポーネントはどのように扱うのですか?

私は 'ダッシュボード'コントローラを持っています。これは 'ダッシュボード#表示'アクションによってレンダリングされます。

これで、ダッシュボードの一部であるajaxベースの 'tabs'コンポーネントが必要になりました。

溶液1:

Iは、2つの可能な解決策を持っている例えばアクションとしてタブコンポーネントを実装します'ダッシュボード#タブ'(これは私の現在の解決策です)。

  • tabs_dashboard_path

ソリューション2:これは私の醜いヘルパーを与え、例えばネストされたリソースとしてそれをimplented 'ダッシュボード/タブ#表示'。これは私が最善の行動がどうなるか、他のAjaxコンポーネントの多くを持ってきれいという名前のヘルパー例えば:心の中で

ベアリング・

  • dashboard_tabs_pathを与えるのだろうか?

    ソリューション2を使用すると、リソースが深く入れ子になり、「表示」アクションが1つしかありません。これは私の好みにはあまりにも冗長すぎるようです。

    resource :dashboard, :only => [:show], :controller => "users/dashboard" do 
        resource :tabs :only => [:show], :controller => "users/dashboard/tabs" do 
        resource :steps :only => [:show], :controller => "users/dashboard/tabs/steps" 
        #etc.... 
        end 
    end 
    

    はこれに対処するための良いレールの方法があります:として

    は、例えばルートが指定されるだろうか?

+0

私も同様の質問があります:http://stackoverflow.com/questions/9585179/how-do-i-structure-rails-3-controllers-and-views-for-ajax-based-applications – user1243113

答えて

0

私はコントローラに非常に少数のアクションしか持たず、基本的なREST動詞しか扱わない傾向があります。したがって、マルチショーの状況では、私は単一のdashboard#showを保持し、タブを処理する部分/レイアウトを持っていました。私の根拠は、タブ自体がリソースではなく、実際にRESTfulなアクションを実行しないということです。

関連する問題