发出 GET 请求时,控制器给出错误数量的参数错误
Controller gives wrong number of arguments error when GET request is made
我写了一个 rails-api 有两个资源 users
和 books
。当我为 books
发出 GET 请求时它工作正常,但对于 users
它失败并显示以下消息:
Started GET "/users/" for 127.0.0.1 at 2015-11-18 23:45:52 +0530
Processing by UsersController#index as HTML
User Load (0.5ms) SELECT `users`.* FROM `users`
Completed 500 Internal Server Error in 63ms (ActiveRecord: 4.2ms)
ArgumentError (wrong number of arguments (0 for 1)):
app/controllers/users_controller.rb:8:in `index'
Rendered /Users/me/.rvm/gems/ruby-2.2.3/bundler/gems/rails-35ca78a07c8b/actionpack/lib/action_dispatch/middleware/templates/rescues/_source.erb (17.6ms)
Rendered /Users/me/.rvm/gems/ruby-2.2.3/bundler/gems/rails-35ca78a07c8b/actionpack/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.1ms)
Rendered /Users/me/.rvm/gems/ruby-2.2.3/bundler/gems/rails-35ca78a07c8b/actionpack/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms)
Rendered /Users/me/.rvm/gems/ruby-2.2.3/bundler/gems/rails-35ca78a07c8b/actionpack/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (69.4ms)
这是我在浏览器上遇到的错误:
UsersController#index 中的参数错误
参数数量错误(0 代表 1)
提取的源代码(第 8 行附近):
...
# GET /users
def index
@users = User.all
render json: @users # this is line 8
end
...
config/routes.rb
Rails.application.routes.draw do
resources :users
resources :books
end
关于可能出了什么问题的任何线索?
可以尝试渲染@users.to_json
User.all 返回任何用户吗?
错误出在我传递给序列化程序的模型上。我的数据库中有一个名为 method
的列。 method
是造成问题的 rails 保留字(读作:ruby-and-rails-reserved-words)。我将我的专栏重命名为 registration_method
,这解决了这个问题。感谢大家的帮助:)
我写了一个 rails-api 有两个资源 users
和 books
。当我为 books
发出 GET 请求时它工作正常,但对于 users
它失败并显示以下消息:
Started GET "/users/" for 127.0.0.1 at 2015-11-18 23:45:52 +0530
Processing by UsersController#index as HTML
User Load (0.5ms) SELECT `users`.* FROM `users`
Completed 500 Internal Server Error in 63ms (ActiveRecord: 4.2ms)
ArgumentError (wrong number of arguments (0 for 1)):
app/controllers/users_controller.rb:8:in `index'
Rendered /Users/me/.rvm/gems/ruby-2.2.3/bundler/gems/rails-35ca78a07c8b/actionpack/lib/action_dispatch/middleware/templates/rescues/_source.erb (17.6ms)
Rendered /Users/me/.rvm/gems/ruby-2.2.3/bundler/gems/rails-35ca78a07c8b/actionpack/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.1ms)
Rendered /Users/me/.rvm/gems/ruby-2.2.3/bundler/gems/rails-35ca78a07c8b/actionpack/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms)
Rendered /Users/me/.rvm/gems/ruby-2.2.3/bundler/gems/rails-35ca78a07c8b/actionpack/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (69.4ms)
这是我在浏览器上遇到的错误:
UsersController#index 中的参数错误
参数数量错误(0 代表 1)
提取的源代码(第 8 行附近):
...
# GET /users
def index
@users = User.all
render json: @users # this is line 8
end
...
config/routes.rb
Rails.application.routes.draw do
resources :users
resources :books
end
关于可能出了什么问题的任何线索?
可以尝试渲染@users.to_json
User.all 返回任何用户吗?
错误出在我传递给序列化程序的模型上。我的数据库中有一个名为 method
的列。 method
是造成问题的 rails 保留字(读作:ruby-and-rails-reserved-words)。我将我的专栏重命名为 registration_method
,这解决了这个问题。感谢大家的帮助:)