0

我有一个通过以下方式构建的rails-api应用程序:rails-api new myapp --skip-sprockets -d mysql

然后我有一些我使用创建的内容:rails g scaffold data name:string

我在使用 rails 默认测试工具测试创建该类型对象的发布请求时遇到问题。我越来越:

undefined method `to_i' for true:TrueClass (NoMethodError)  

我的路线已设置:resources :data, except: [:new, :edit]
控制器和模型已像往常一样由rails g scaffold

详细信息:
-Ruby 2.1.1
-Rails 4
-data_controller.rb:https ://gist.github.com/glesage/9902677-data_controller_test.rb: https
://gist.github.com/glesage/9902719- 错误堆栈轮流:https ://gist.github.com/glesage/9903392 - 无轮流错误堆栈: https : //gist.github.com/glesage/9903413 - artmees 方式错误堆栈:https://gist。 github.com/glesage/9903483 *



请指教!谢谢!!

4

2 回答 2

1

我认为您缺少 api 的请求标头

test "should create data" do
  assert_difference('Data.count') do
    post '/data',             # URL to the data
      { name: 'my_name' },    # params you want to send
      {                       # Headers make sure they are correct don't just copy them
        HTTP_CONTENT_TYPE: 'application/json', # This is cause i send the request in JSON
        HTTP_ACCEPT: 'application/vnd.your_domain+json; version=1'
      }
  end

  assert_response 201
end
于 2014-03-30T23:34:39.733 回答
0

我认为这最终是一个非错误。http://rubygems.org/gems/turn可能与 API 样式的 JSON 发布请求不兼容,等等。

在不使用 turn 的情况下,我能够更好地诊断问题,将其追溯到 Rails 4 的“sanitize_for_mass_assignment”问题,以及控制器需要不同的参数而不是传递...

奇怪的东西(:

无论如何,感谢artmees的帮助!

于 2014-03-31T22:25:30.913 回答