【问题标题】:Cucumber Testing js.erb functions when no html.erb exists不存在 html.erb 时黄瓜测试 js.erb 功能
【发布时间】:2011-10-04 18:02:35
【问题描述】:

我的 rails 应用程序在特定窗口中使用 js.erb 视图而不是 html.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。我想以某种方式告诉 cucumber/capybara 不要尝试渲染 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

【问题讨论】:

    标签: javascript ruby-on-rails testing cucumber capybara


    【解决方案1】:

    您应该对您的回复使用正确的 MIME 类型处理。试试这个:

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

    最终您可以更具体地了解如何回应:

    format.js { render layout: false }
    

    有关 respond_to here 的更多信息。

    注意:如果你的控制器只管理js响应,你可以在类的顶部添加respond_to :js,然后在你的action中使用respond_with @object

    【讨论】:

    • 这有点帮助,这个黄瓜不再需要查看 html,但它仍然无法正确呈现转义 javascript,这是一个不同的问题,所以这是正确的答案
    • 如果您查看escape_javascript source,您会看到该方法检查其参数是否标记为html_safe,并相应地标记输出。如果输出未标记为 html_safe,则不会正确呈现。试试这个:&lt;%= raw j(render partial: 'groups') %&gt;jescape_javascript 的别名)
    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多