2011-10-04 48 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'的别名) –