2011-10-04 14 views
2

我的rails應用程序使用js.erb視圖而不是html.erb視圖來顯示特定的窗口。這在實踐中工作正常,但是當我用黃瓜測試與水豚當我點擊屬於這個特定視圖按鈕它給我的當沒有html.erb存在時,黃瓜測試js.erb函數

Missing template admin/groups with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths 

錯誤。沒有groups.html.erb,但有一個groups.js.erb。我想以某種方式告訴黃瓜/水豚不要嘗試呈現groups.html.erb,但仍呈現groups.js.erb。我寧願不生成一個不必要的html文件來呈現下面的轉義javascript所做的相同的事情。

groups.js.erb:

$("#admin_content").html("<%= escape_javascript(render :partial => 'groups') %>"); 

相關的管理控制方法:

def groups 
    @groups = Group.all 
end 

回答

0

你應該使用正確的MIME類型處理您的答覆。試試這個:

def groups 
    @groups = Group.all 
    respond_to do |format| 
    format.js 
    end 
end 

最終你能具體談談如何應對:對的respond_to here

format.js { render layout: false } 

更多信息。

注:如果你的控制器僅管理JS的反應,你可以在類的頂部添加respond_to :js,然後用你的行動respond_with @object

+0

這有點幫助,這個黃瓜不再要求看到html,但它仍然不會正確渲染轉義javascript,這是一個不同的問題,所以這是正確的答案 – dannymc129

+0

如果你看看[escape_javascript源碼](http://apidock.com/rails/ActionView/Helpers/JavaScriptHelper/escape_javascript),您會看到該方法檢查其參數是否標記爲「html_safe」,並相應地標記輸出。如果輸出未標記爲html_safe,則不會正確呈現。試試這個:'<%= raw j(render partial:'groups')%>'('j'是'escape_javascript'的別名) –