2011-10-26 5 views
0

link_to :remote => trueを使用していて、show_call.js.erbを実行しています。Rails 3でテンプレートを見つけられず、javascriptからレンダリングできないのはなぜですか?

$("#display-call").html(<%= render :template => "contact_calls/new"%>) 

はしかし、私はこの次のエラーを取得する:

ActionView::Template::Error (Missing partial contact_calls/new with {:locale=>[:en, :en], :handlers=>[:prawn_xxx, :prawn, :prawn_dsl, :haml, :erb, :rhtml, :builder, :rjs, :rxml], :formats=>[:js, :html]} in view paths 

ありアプリ/ビュー/ contact_calls/new.html.erbのビューがある---が、私はそれを望んでいると言って、このエラーを取得します"部分"?私は通常のビューをレンダリングしたいだけです。ここで

はhew.html.haml現在呼び出されるものです:

contact_callコントローラの
1 - title "Sending call" 
    2 = render :partial => 'call', :call => @call 

私は@call

を定義し、私はtheh _CALL部分的にこれを移動:

1 #main 
    2 = render :partial => 'contacts/contactpartial' 
    3 %p= link_to call.title, call_path(call) 
    4 = render :partial => 'form' 
    5 %p= link_to "Back to List", contact_calls_path 

答えて

1

部分名のファイル名はアンダースコアで始まる必要があります。

# new.html.erb 
<%= render 'call', :call => @call %> 

// show_call.js.erb 
$("#display-call").html(<%= render 'call', :call => @call %>); 
:あなたはあなたのファイル app/views/contacts_calls/_new.html.erbが、より多くの可能性が高いあなたは別の部分に共通のコードを蒸留、 _call.html.erbを言うと、以下のようなものを経由して両方のテンプレートでそれをレンダリングしたいと呼ぶかもしれません

私は部分変数にcallという名前のローカル変数を渡したいと仮定していることに注意してください。

トップレベルのビューを別のビューからレンダリングすることはできません。別のビューの一部をレンダリングする場合は、共有ビューコードを部分的に抽出して、両方のトップレベルビューからレンダリングする必要があります。

+0

同意。また、一般的には、7つの「安らかな」名前の1つ以外のもの、たとえばnew、createなどを使ってリモート呼び出しからデータを返す部分名を指定することをお勧めします。/views/contacts_calls/_call.html.erb'。 –

+0

ahhh ....だから私はリモートでも別のビューをレンダリングすることはできません...それは役立ちます...レール2で...私はそれを行うことができました.....これは非乾燥になりませんそれは私が直接行くときに使用するビューと同じですから? – Angela

+0

一部は*より* DRYです。あなたは、コードの共有ビットを部分的に抜き出す必要があります。それがそのためのものです。 – meagar

関連する問題