【问题标题】:Respond to JSON is responding via HTML响应 JSON 是通过 HTML 响应
【发布时间】:2013-03-29 16:47:03
【问题描述】:

在我的 Rails 应用程序中,我有应用程序控制器

respond_to :json

一个继承了Application控制器的控制器在动作中用json响应...

  # Some code

  if mission_updated.eql? true
    render :json => {}
  else
    render :json => {}
  end

但是,每当我参考上述操作运行 rspec 测试时

  it "should return appropriate response" do
    post :update_unlocked_missions

    parsed_body = JSON.parse(response.body)

    parsed_body.should == {}
  end

我返回了以下 rspec 错误

ActionView::MissingTemplate:
       Missing template api/v1/missions/update_unlocked_missions, api/v1/base/update_unlocked_missions with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :rabl, :haml]}. Searched in:
         * "#<RSpec::Rails::ViewRendering::EmptyTemplatePathSetDecorator:0x007f9ea2903b00>"

我的问题是为什么它应该用 json 响应时会进入视图,我该如何解决这个问题?

【问题讨论】:

  • 如果你有一个控制器动作,它的主体只是render :json =&gt; {},那会返回你所期望的吗?
  • 还有一个想法:尝试使用render json: {}, layout: false...尽管您似乎不必明确告诉它不要使用布局。
  • 前一个建议有效。我返回了一个空的 json。我想现在我必须弄清楚为什么我的操作中的代码会产生一个视图。
  • 似乎它必须是 mission_updated 中的内容。我敢打赌,如果您将控制器的 if 更改为 if trueif false,它会起作用。
  • 啊,虽然不是您帮助我解决问题的确切方法。我在一个循环中有 response_to,长话短说,循环阻止了 respond_to 被调用。如果需要,请更新您的答案。

标签: ruby-on-rails json ruby-on-rails-3 rspec controller


【解决方案1】:

尝试使用 render json: {} 的操作进行测试。如果可行,问题可能出在mission_updated

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多