Describe the bug
A 500 server error is raised when trying to create an API resource for an API namespace whose has_form
property is set to false
To Reproduce Steps to reproduce the behavior:
Expected behavior A page to create a new API resource should appear instead of 500 server error
error from sipshucksip.com
An ActionView::Template::Error occurred in api_resources#new:
undefined method `dig' for nil:NilClass
app/helpers/api_forms_helper.rb:48:in `map_non_primitive_data_type'
-------------------------------
Request:
-------------------------------
* URL : https://public.sipshucksip.com/api_namespaces/4/resources/new
* HTTP Method: GET
* IP address : 27.34.22.234
* Parameters : {"controller"=>"comfy/admin/api_resources", "action"=>"new", "api_namespace_id"=>"4"}
* Timestamp : 2023-01-12 16:53:53 UTC
* Server : ip-172-31-41-187
* Rails root : /var/www/violet/releases/20230111152108
* Process: 4070979
-------------------------------
Session:
-------------------------------
* session id: [FILTERED]
* data: {"session_id"=>"a2772a98b625cddaff0a51261dab2b99",
"user_return_to"=>"/api_namespaces/4/resources/new",
"warden.user.user.key"=>[[10], "$2a$12$gUoPjYdnj.KuVW1ERT2fle"],
"warden.user.user.session"=>{"last_request_at"=>1673542433},
"site_id"=>1,
"_csrf_token"=>"Y4gzMswxntcrJgH8C8UiAie-WkYnkN-xFxMdflTSeGE="}
-------------------------------
Environment:
-------------------------------
* GATEWAY_INTERFACE : CGI/1.2
* HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
* HTTP_ACCEPT_ENCODING : gzip, deflate, br
* HTTP_ACCEPT_LANGUAGE : en-US,en;q=0.9
* HTTP_CONNECTION : close
* HTTP_COOKIE : cookies_accepted=true; ahoy_visitor=706aaee0-ee47-456f-9941-2a4cbdd8156a; ahoy_visit=b626df9d-9de7-4afd-b0a2-841408475dab; _r_solutions_session=7Lduf4i0jxN9tl%2Bfjf3byNE09WM9m8w3ZALkfw8n6bSF6c8mL2zG7ZbqOrMfFLQssV%2BjtqpThTkHv0D6kYgsTRUf0VRS5AAlFhFLrAq%2Bl2gkszUcjxKCmDobqyH3DMoUemkpyYWtd8gJvatoCDo8ye7KLs6rDhvzkj%2BzDVzxG0e95TNWucvBYm6cvUO0i2q9Rxnilzw3L40r9oKDTyDC%2FEfUpDJjW%2BQXt0xlPAgIfBDtP5DrmgrC1QlmWyW6cRw9vpaUU7rWMsofwMyMdlDEGDgmvsTKBg4lynL6PeagJgcJSDNCTbRN9UqIIgKNyanyDcuz3N5cIdKxt5F9iHtTBC0JgFt4fg34KVZtTMtw0d6VOdIroELeAgJBr5JLmpmu9nJ0Q2KeDASO1HVqQq4Px3lvyg5qaM2xNTqnApep8lu4%2BRWx9isPV13rEsUFXqViB%2BJo6KB%2BpA97wgBNpjCBkLkNmCy216cTDL%2BUBGmHLu2V7htq%2FvLTBOGMCRreGJUHsPjmoO5dtLm%2Frz7GpE3S0LVV5h9L%2B3ZU2GxTePpsQMISbofJCUZJJNiK83qYZuM7drV34iYGkrzYa2qXOQMf4D6VLl1b1IQa--Om6hQIMYAPHdHdLB--s4w%2FdksFdgI65ZWx4SLHNQ%3D%3D
* HTTP_HOST : [public.sipshucksip.com](http://public.sipshucksip.com/)
* HTTP_IF_NONE_MATCH : W/"036d13ab644d7d1fef8001eb219049a5"
* HTTP_REFERER : https://public.sipshucksip.com/api_namespaces/cocktails
* HTTP_SEC_CH_UA : "Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"
* HTTP_SEC_CH_UA_MOBILE : ?0
* HTTP_SEC_CH_UA_PLATFORM : "macOS"
* HTTP_SEC_FETCH_DEST : document
* HTTP_SEC_FETCH_MODE : navigate
* HTTP_SEC_FETCH_SITE : same-origin
* HTTP_SEC_FETCH_USER : ?1
* HTTP_UPGRADE_INSECURE_REQUESTS : 1
* HTTP_USER_AGENT : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/[108.0.0.0](http://108.0.0.0/) Safari/537.36
* HTTP_VERSION : HTTP/1.0
* HTTP_X_FORWARDED_FOR : 27.34.22.234
* HTTP_X_FORWARDED_PROTO : https
* HTTP_X_REAL_IP : 27.34.22.234
* ORIGINAL_FULLPATH : /api_namespaces/4/resources/new
* ORIGINAL_SCRIPT_NAME :
* PATH_INFO : /api_namespaces/4/resources/new
* QUERY_STRING :
* REMOTE_ADDR : 127.0.0.1
* REQUEST_METHOD : GET
* REQUEST_PATH : /api_namespaces/4/resources/new
* REQUEST_URI : /api_namespaces/4/resources/new
* ROUTES_47210260736080_SCRIPT_NAME :
* SCRIPT_NAME :
* SERVER_NAME : [public.sipshucksip.com](http://public.sipshucksip.com/)
* SERVER_PORT : 443
* SERVER_PROTOCOL : HTTP/1.1
* SERVER_SOFTWARE : puma 5.6.4 Birdie's Version
* action_controller.instance : #<Comfy::Admin::ApiResourcesController:0x00007fedf4563710>
* action_dispatch.authenticated_encrypted_cookie_salt : [FILTERED]
* action_dispatch.backtrace_cleaner : #<Rails::BacktraceCleaner:0x000055dffd19d498>
* action_dispatch.content_security_policy :
* action_dispatch.content_security_policy_nonce_directives:
* action_dispatch.content_security_policy_nonce_generator :
* action_dispatch.content_security_policy_report_only : false
* action_dispatch.cookies : #<ActionDispatch::Cookies::CookieJar:0x00007fedf459f7b0>
* action_dispatch.cookies_digest :
* action_dispatch.cookies_rotations : #<ActiveSupport::Messages::RotationConfiguration:0x000055dff8eeb9b0>
* action_dispatch.cookies_same_site_protection : #<Proc:[email protected]/var/www/violet/shared/bundle/ruby/2.6.0/gems/railties-6.1.5/lib/rails/application.rb:636>
* action_dispatch.cookies_serializer : json
* action_dispatch.encrypted_cookie_cipher : [FILTERED]
* action_dispatch.encrypted_cookie_salt : [FILTERED]
* action_dispatch.encrypted_signed_cookie_salt : [FILTERED]
* action_dispatch.http_auth_salt : [FILTERED]
* action_dispatch.key_generator : #<ActiveSupport::CachingKeyGenerator:0x000055dffbfdef68>
* action_dispatch.logger : #<ActiveSupport::Logger:0x000055dffa83e570>
* action_dispatch.parameter_filter : [:passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn]
* action_dispatch.permissions_policy :
* action_dispatch.redirect_filter : []
* action_dispatch.remote_ip : 27.34.22.234
* action_dispatch.request.content_type :
* action_dispatch.request.formats : [#<Mime::Type:0x000055dff8adc720 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html", @hash=1539247684941658837>]
* action_dispatch.request.parameters : {"controller"=>"comfy/admin/api_resources", "action"=>"new", "api_namespace_id"=>"4"}
* action_dispatch.request.path_parameters : {:controller=>"comfy/admin/api_resources", :action=>"new", :api_namespace_id=>"4"}
* action_dispatch.request.query_parameters : {}
* action_dispatch.request.request_parameters : {}
* action_dispatch.request.unsigned_session_cookie : {"session_id"=>"a2772a98b625cddaff0a51261dab2b99", "user_return_to"=>"/api_namespaces/cocktails", "warden.user.user.key"=>[[10], "$2a$12$gUoPjYdnj.KuVW1ERT2fle"], "warden.user.user.session"=>{"last_request_at"=>1673542433}, "site_id"=>1, "_csrf_token"=>"[FILTERED]"}
* action_dispatch.request_id : 65083d87-f670-4088-9d4c-274a93f7bf49
* action_dispatch.routes : #<ActionDispatch::Routing::RouteSet:0x000055dffda450a0>
* action_dispatch.secret_key_base : [FILTERED]
* action_dispatch.show_detailed_exceptions : false
* action_dispatch.show_exceptions : true
* action_dispatch.signed_cookie_digest :
* action_dispatch.signed_cookie_salt : [FILTERED]
* action_dispatch.use_authenticated_cookie_encryption : [FILTERED]
* action_dispatch.use_cookies_with_metadata : true
* exception_notifier.exception_data : {:current_user=>#<User id: 10, global_admin: false, created_at: "2022-12-22 04:34:13.913985000 +0000", updated_at: "2023-01-12 16:48:32.356461000 +0000", email: "[email protected]", can_manage_web: true, can_manage_email: false, can_manage_users: false, can_manage_blog: false, name: "Sushm...
* puma.config : #<Puma::Configuration:0x000055dff76e9e20>
* puma.request_body_wait : 0
* puma.socket : #<TCPSocket:0x00007fede421fb40>
* rack.after_reply : []
* rack.cors : #<Rack::Cors::Result:0x00007fede421ef88>
* rack.errors : #<IO:0x000055dff6ddc0d0>
* rack.hijack : #<Puma::Client:0x00007fede421fb18>
* rack.hijack? : true
* rack.input : #<Puma::NullIO:0x000055dff79bf258>
* rack.multiprocess : false
* rack.multithread : true
* rack.request.cookie_hash : {"cookies_accepted"=>"true", "ahoy_visitor"=>"706aaee0-ee47-456f-9941-2a4cbdd8156a", "ahoy_visit"=>"b626df9d-9de7-4afd-b0a2-841408475dab", "_r_solutions_session"=>"7Lduf4i0jxN9tl+fjf3byNE09WM9m8w3ZALkfw8n6bSF6c8mL2zG7ZbqOrMfFLQssV+jtqpThTkHv0D6kYgsTRUf0VRS5AAlFhFLrAq+l2gkszUcjxKCmDobqyH3DMoUemkpyYWt...
* rack.request.cookie_string : cookies_accepted=true; ahoy_visitor=706aaee0-ee47-456f-9941-2a4cbdd8156a; ahoy_visit=b626df9d-9de7-4afd-b0a2-841408475dab; _r_solutions_session=7Lduf4i0jxN9tl%2Bfjf3byNE09WM9m8w3ZALkfw8n6bSF6c8mL2zG7ZbqOrMfFLQssV%2BjtqpThTkHv0D6kYgsTRUf0VRS5AAlFhFLrAq%2Bl2gkszUcjxKCmDobqyH3DMoUemkpyYWtd8gJvatoCDo8ye7KLs6rDhvzkj%2BzDVzxG0e95TNWucvBYm6cvUO0i2q9Rxnilzw3L40r9oKDTyDC%2FEfUpDJjW%2BQXt0xlPAgIfBDtP5DrmgrC1QlmWyW6cRw9vpaUU7rWMsofwMyMdlDEGDgmvsTKBg4lynL6PeagJgcJSDNCTbRN9UqIIgKNyanyDcuz3N5cIdKxt5F9iHtTBC0JgFt4fg34KVZtTMtw0d6VOdIroELeAgJBr5JLmpmu9nJ0Q2KeDASO1HVqQq4Px3lvyg5qaM2xNTqnApep8lu4%2BRWx9isPV13rEsUFXqViB%2BJo6KB%2BpA97wgBNpjCBkLkNmCy216cTDL%2BUBGmHLu2V7htq%2FvLTBOGMCRreGJUHsPjmoO5dtLm%2Frz7GpE3S0LVV5h9L%2B3ZU2GxTePpsQMISbofJCUZJJNiK83qYZuM7drV34iYGkrzYa2qXOQMf4D6VLl1b1IQa--Om6hQIMYAPHdHdLB--s4w%2FdksFdgI65ZWx4SLHNQ%3D%3D
* rack.request.query_hash : {}
* rack.request.query_string :
* rack.run_once : false
* rack.session : #<ActionDispatch::Request::Session:0x00007fedf4546b60>
* rack.session.options : #<ActionDispatch::Request::Session::Options:0x00007fedf4546ae8>
* rack.tempfiles : []
* rack.url_scheme : https
* rack.version : [1, 6]
* warden : Warden::Proxy:70329991574580 @config={:default_scope=>:user, :scope_defaults=>{}, :default_strategies=>{:user=>[:two_factor_authenticatable, :two_factor_authenticatable, :rememberable]}, :intercept_401=>false, :failure_app=>RSolutionsFailureApp}
-------------------------------
Backtrace:
-------------------------------
app/helpers/api_forms_helper.rb:48:in `map_non_primitive_data_type'
app/views/comfy/admin/api_namespaces/_editor.haml:14
app/views/comfy/admin/api_namespaces/_editor.haml:8
app/views/comfy/admin/api_namespaces/_editor.haml:7:in `each_with_index'
app/views/comfy/admin/api_namespaces/_editor.haml:7
app/views/comfy/admin/api_resources/_form.html.haml:12
app/views/comfy/admin/api_resources/_form.html.haml:5
app/views/comfy/admin/api_resources/new.html.haml:3
-------------------------------
Data:
-------------------------------
* data: {:current_user=>
#<User id: 10, global_admin: false, created_at: "2022-12-22 04:34:13.913985000 +0000", updated_at: "2023-01-12 16:48:32.356461000 +0000", email: "[email protected]", can_manage_web: true, can_manage_email: false, can_manage_users: false, can_manage_blog: false, name: "Sushmit", moderator: false, can_view_restricted_pages: true, deliver_analytics_report: false, can_manage_subdomain_settings: false, session_timeoutable_in: "1-hour", can_access_admin: true, deliver_error_notifications: false, can_manage_analytics: false, can_manage_files: false, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, consumed_timestep: nil, otp_required_for_login: false, api_accessibility: {"all_namespaces"=>{"full_access"=>"true"}}, can_access_forum: true, otp_secret: nil>,
:current_visit=>nil}