7

最近迁移到 Rails 4 并遇到了我以前没有遇到的错误。我正在尝试测试我正在使用 Capybara/Rspec 制作的表格。

当我单击表单上的按钮时,我得到的错误是:

Failure/Error: find(".submit.button").click
     ActionController::UnknownFormat:
       ActionController::UnknownFormat
     # ./app/controllers/office_listings_controller.rb:32:in `create'
     # ./spec/features/office_listings_spec.rb:78:in `block (3 levels) in <top (required)>'

它指向我的控制器,如下所示:

def create
    selected_amenities = params[:amenities] || [] # empty list if no amenities checked
    @office_listing = OfficeListing.new(params[:office_listing])
    @office_listing.broker = current_broker
    p current_broker
    @office_listing.neighborhood = Neighborhood.find(params[:neighborhood_id])
    p @office_listing.neighborhood
    if @office_listing && @office_listing.save!
      @path = city_neighborhood_office_listing_path(@office_listing, :city_id => @office_listing.neighborhood.city.id, :neighborhood_id => @office_listing.neighborhood.id)
      create_amenities(@office_listing, selected_amenities)
      respond_to do |format|
        format.js
      end
    else
      @failure = "Unable to create office :-("
      respond_to do |format|
        format.js
      end
    end
  end

它不喜欢 format.js 行,即使我有一个 create.js.erb 文件,该文件在我实际运行页面时正在呈现。

不明白为什么实际页面正在运行,但我的测试失败了。

任何想法将不胜感激!

4

3 回答 3

15

我有一个类似的问题:

post :duplicate, id: patient.media.first.id

产生了同样的错误:

Failure/Error: post :duplicate, id: patient.media.first.id
ActionController::UnknownFormat:
ActionController::UnknownFormat

我通过将格式添加到 post call 来修复它:

post :duplicate, id: patient.media.first.id, format: :js
于 2013-09-11T18:50:31.357 回答
3

在 Rails 5 之前:

post :action, id: ..., format: :json

从 Rails 5 开始:

post :action, params: { id: ..., format: :json }
于 2016-11-05T20:49:28.430 回答
2

是的,使用格式: :js 解决了这个问题,在我的情况下,我的代码如下所示:

在我的规范中:

  params = {
    profile_id: profile.id,
    track_id: track.id,
    format: :js
  }

  post :create, params

在我的控制器中:

  respond_to do |format|
    format.js {}
  end
于 2016-01-27T00:52:35.063 回答