Tôi đang ở trên Rails 2.3.5. Trong một bộ điều khiển sử dụng điển hình tạo ra hành độngLỗi chuỗi JSON không hợp lệ trong Rails
class UsersController
def create
@user = User.new(params[:user])
respond_to do |format]
if @user.save ...
else
format.json ....
end
end
end
Khi một khách hàng đi một/chuỗi JSON bị thay đổi không hợp lệ cho đầu vào, Rails ném một lỗi 500 máy chủ nội bộ nói "chuỗi JSON không hợp lệ". Tôi có thể bẫy lỗi để tôi có thể đưa ra thông báo tùy chỉnh không?
CẬP NHẬT Đây là ngăn xếp theo yêu cầu. Tôi biết đây là một chuỗi JSON không đúng định dạng, câu hỏi của tôi không phải là cách sửa chuỗi JSON mà là cách bẫy lỗi cụ thể này để tôi có thể gửi lại một thông báo lỗi có ý nghĩa hơn lỗi HTTP 500 Internal Server . Cảm ơn trước sự giúp đỡ của bạn
Error occurred while parsing request parameters.
Contents:
user: {login: "John", email: "[email protected]", password: "111"}}
/!\ FAILSAFE /!\ Mon Nov 08 02:01:04 -0800 2010
Status: 500 Internal Server Error
Invalid JSON string
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/json/backends/yaml.rb:14:in `decode'
c:1:in `__send__'
c:1:in `decode'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/params_parser.rb:42:in `parse_formatted_parameters'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/params_parser.rb:11:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/session/cookie_store.rb:93:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/failsafe.rb:26:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `synchronize'
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:114:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/reloader.rb:34:in `run'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:108:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/rails/rack/static.rb:31:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:46:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `each'
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/rails/rack/log_tailer.rb:17:in `call'
...
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/mongrel.rb:34:in `run'
c:/ruby/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/server.rb:111
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
script/server:3
re.rb:31:in `require'
script/server:3
bạn có thể đặt backtrace hoàn chỉnh không? – shingara