当没有html.erb存在时,黄瓜测试js.erb函数

时间:2011-10-04 18:02:36

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

我的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

1 个答案:

答案 0 :(得分:0)

您应该对您的回复使用正确的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,然后在您的操作中使用respond_with @object