[前][次][番号順一覧][スレッド一覧]

rails:873

From: "Shouta Ohnishi" <s-onishi@d...>
Date: 11 Jan 2006 17:29:01 +0900
Subject: [rails:873] Re: components下のコントローラからapp下のテンプレート(partials利用)を呼び出す

すみません、自己解決しました。

 class Standard::TopController < ApplicationController
   def self.controller_path
      'main'
   end

   def index
   end
 end

というようにcontroller_pathメソッドをオーバーライドし、app下のコントローラ名
に書き換えることで対応できました。
render(:file)も必要なくなりました。

Railsのソースを見たところ、partialsのパス解決は下記partial_pieceメソッドでお
こなわれており、そこでcontroller_pathメソッドが呼ばれているようです。

#action_view/partials.rb : 85行目あたり
      def partial_pieces(partial_path)
        if partial_path.include?('/')
          return File.dirname(partial_path), File.basename(partial_path)
        else
          return controller.class.controller_path, partial_path
        end
      end

以上、お騒がせしました。


----- Original Message ----- 
From: "Shouta Ohnishi" <s-onishi@d...>
To: <rails@r...>
Sent: Wednesday, January 11, 2006 5:03 PM
Subject: [mailinglist] [rails:872] components下のコントローラからapp下のテン
プレート(partials利用)を呼び出す


> 大西と申します。
>
> componentsとpartialsを使ってアプリケーションを作成しているのですが、レンダ> ングのパス周りがうまく解決できずに困っています。
>
> app/views/xxx以下のテンプレートをcomponents以下のコントローラから利用した> というイメージです。
>
> サンプル:
> #RAILS_ROOT/components/standard/top_controller.rb
> class Standard::TopController < ApplicationController
>   def index
>     render(:file=>'/main/index' , :use_full_path=>true)
>   end
> end
>
> #RAILS_ROOT/app/views/main/index.rhtml
> <html>
>  <body>
>   <%= render_partial "left"%>
>  </body>
> </html>
>
> #RAILS_ROOT/app/views/main/_left.rhtml
> <div>left contents</div>
>
> アプリの構造は、下記のような感じです。
>
> 1.RAILS_ROOT/components/standard 以下にコントローラを配置している
> 2.app/views/main 下のテンプレートにレンダリングする
> 3.テンプレートはpartialsを使い、別のテンプレートをインクルードしている
>
> ただ単にcomponents下のコントローラからapp下のテンプレートを呼び出すだけで> ればサンプルの通りrender(:file)で実現できるのですが、問題はテンプレートが
> partialsを含んでいる点で、partialsファイル読み込み時にパスをうまく解決でき> に落ちてしまいます。
>
> エラーメッセージに「No rhtml, rxml, rjs or delegate template found for
> standard/top/_left」とあります。
> partialsファイルが「standard/top/_left.rhtml」というパスに解決され、見つか> ず落ちているようです。
> 「main/_left.rhtml」というパスに解決されれば万事解決なのですが・・・。
>
> 何かうまい回避方法をご存知の方はいらっしゃいませんでしょうか??
>
>
> --
> ML: rails@r...
> 使い方: http://QuickML.com/
>


--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

       872 2006-01-11 09:03 [s-onishi@d...       ] components下のコントローラからapp下のテンプレート(partials利用)を呼び出す
->     873 2006-01-11 09:29 ┗[s-onishi@d...       ]