2011-10-26 75 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目前叫做:

1 - title "Sending call" 
    2 = render :partial => 'call', :call => @call 

爲contact_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

部分的文件名必須以下劃線開頭;你可能會打電話給你的文件app/views/contacts_calls/_new.html.erb,但更可能要提煉出共同的代碼到另一個部分,說_call.html.erb,並通過類似在兩個模板使它以下幾點:

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

// show_call.js.erb 
$("#display-call").html(<%= render 'call', :call => @call %>); 

請注意,我正在做一個關於想將局部變量call傳遞給你的部分的假設。

您無法在另一個視圖中渲染頂級視圖。如果要渲染另一個視圖的某個部分,則必須將共享視圖代碼提取爲部分視圖,並從兩個頂層視圖中渲染它。

+0

同意。我還補充道,一般來說,使用除了七個'restful'名稱之外的其他名稱來遠程調用返回數據的partials是一個好主意 - 例如new,create等。在這種情況下,可能會調用它'app /視圖/ contacts_calls/_call.html.erb'。 –

+0

ahhh ....所以我不能渲染另一個視圖,甚至遠程...這是有幫助的...在Rails 2中...我能做到這一點.....這不會使它不幹因爲這是直接進行時使用的相同視圖? – Angela

+0

部分是*更*幹。你應該把共享的代碼部分提取出來,這就是他們的目的。 – meagar