2011-06-09 50 views
0

我有下面的代碼在app/views/foo/index.rhtml爲什麼嵌套佈局中的共享局部視圖不能在Rails功能測試中工作?

<% render :layout => 'bar_group', :locals => {:id => 'gold_bars'} do %> 
    <%= render :partial => "bar_score_box", :locals => {:scores => scores} %> 
    <%= render :partial => "common/translate_bar_link", :locals => {:bar => bar} %> 
    <% end %> 

_bar_group.rhtml_bar_score_box.rhtml都還app/views/foo/,但_translate_bar_link.rhtmlapp/views/common/

在開發模式下運行我的Rails應用程序並使用Web瀏覽器打開它時,此視圖工作得很好。但是,當我運行一個功能測試命中的觀點,我得到這樣的錯誤:

Exception: Missing template _translate_bar_link.erb in view path 
app/views/foo/_bar_group.rhtml:2 

app/views/foo/_bar_group.rhtml看起來是這樣的:

<div id="<%= id %>" class="tile"> 
    <%= yield %> 
</div> 

所以被在yield行報告的錯誤。

同樣,這可以通過Rails服務器正常工作,但不能在運行功能測試時使用。有誰知道這裏會發生什麼?

更新:事實證明,我有第二個渲染呼籲在我看來,我忘了改到common/translate_bar_link後,同樣的部分,當我提出的部分從app/views/fooapp/views/common

<%= render :partial => "translate_bar_link", :locals => {:bar => bar} %> 

操作員錯誤。對不起,浪費你的時間。標記此問題以進行刪除。

回答

1

嘗試修補渲染(:partial)語句中使用的路徑。

實施例(請注意在 '共同/ translate_bar_link' 前面的斜線):

<% render :layout => 'bar_group', :locals => {:id => 'gold_bars'} do %> 
    <%= render :partial => "bar_score_box", :locals => {:scores => scores} %> 
    <%= render :partial => "/common/translate_bar_link", :locals => {:bar => bar} %> 
<% end %> 

此外,有時它有助於把文件擴展名,也這樣(注意的.rhtml):

<% render :layout => 'bar_group', :locals => {:id => 'gold_bars'} do %> 
    <%= render :partial => "bar_score_box", :locals => {:scores => scores} %> 
    <%= render :partial => "/common/translate_bar_link.rhtml", :locals => {:bar => bar} %> 
<% end %> 

我不知道你使用的是什麼版本的Rails的,但也許你可以重命名common/translate_bar_link.rhtmlcommon/translate_bar_link.html.erb

+0

事實證明,這是運營商的錯誤,因爲我已經編輯我的問題注意。我還會要求刪除它,因爲它對社區毫無用處。 : - / – 2011-06-09 13:56:41

相關問題