CINXE.COM
Action Controller: Exception caught
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Action Controller: Exception caught</title> <style> body { background-color: #FAFAFA; color: #333; margin: 0px; } body, p, ol, ul, td { font-family: helvetica, verdana, arial, sans-serif; font-size: 13px; line-height: 18px; } pre { font-size: 11px; white-space: pre-wrap; } pre.box { border: 1px solid #EEE; padding: 10px; margin: 0px; width: 958px; } header { color: #F0F0F0; background: #C52F24; padding: 0.5em 1.5em; } h1 { margin: 0.2em 0; line-height: 1.1em; font-size: 2em; } h2 { color: #C52F24; line-height: 25px; } .details { border: 1px solid #D0D0D0; border-radius: 4px; margin: 1em 0px; display: block; width: 978px; } .summary { padding: 8px 15px; border-bottom: 1px solid #D0D0D0; display: block; } .details pre { margin: 5px; border: none; } #container { box-sizing: border-box; width: 100%; padding: 0 1.5em; } .source * { margin: 0px; padding: 0px; } .source { border: 1px solid #D9D9D9; background: #ECECEC; width: 978px; } .source pre { padding: 10px 0px; border: none; } .source .data { font-size: 80%; overflow: auto; background-color: #FFF; } .info { padding: 0.5em; } .source .data .line_numbers { background-color: #ECECEC; color: #AAA; padding: 1em .5em; border-right: 1px solid #DDD; text-align: right; } .line { padding-left: 10px; white-space: pre; } .line:hover { background-color: #F6F6F6; } .line.active { background-color: #FFCCCC; } .hidden { display: none; } a { color: #980905; } a:visited { color: #666; } a.trace-frames { color: #666; } a:hover { color: #C52F24; } a.trace-frames.selected { color: #C52F24 } #route_table { margin: 0; border-collapse: collapse; } #route_table thead tr { border-bottom: 2px solid #ddd; } #route_table thead tr.bottom { border-bottom: none; } #route_table thead tr.bottom th { padding: 10px 0; line-height: 15px; } #route_table thead tr.bottom th input#search { -webkit-appearance: textfield; } #route_table tbody tr { border-bottom: 1px solid #ddd; } #route_table tbody tr:nth-child(odd) { background: #f2f2f2; } #route_table tbody.exact_matches, #route_table tbody.fuzzy_matches { background-color: LightGoldenRodYellow; border-bottom: solid 2px SlateGrey; } #route_table tbody.exact_matches tr, #route_table tbody.fuzzy_matches tr { background: none; border-bottom: none; } #route_table td { padding: 4px 30px; } #path_search { width: 80%; font-size: inherit; } </style> <script> var toggle = function(id) { var s = document.getElementById(id).style; s.display = s.display == 'none' ? 'block' : 'none'; return false; } var show = function(id) { document.getElementById(id).style.display = 'block'; } var hide = function(id) { document.getElementById(id).style.display = 'none'; } var toggleTrace = function() { return toggle('blame_trace'); } var toggleSessionDump = function() { return toggle('session_dump'); } var toggleEnvDump = function() { return toggle('env_dump'); } </script> </head> <body> <header> <h1>Routing Error</h1> </header> <div id="container"> <h2>No route matches [GET] "/nypl.org"</h2> <p><code>Rails.root: /app</code></p> <div id="traces"> <a href="#" onclick="hide('Framework-Trace');hide('Full-Trace');show('Application-Trace');; return false;">Application Trace</a> | <a href="#" onclick="hide('Application-Trace');hide('Full-Trace');show('Framework-Trace');; return false;">Framework Trace</a> | <a href="#" onclick="hide('Application-Trace');hide('Framework-Trace');show('Full-Trace');; return false;">Full Trace</a> <div id="Application-Trace" style="display: block;"> <pre><code></code></pre> </div> <div id="Framework-Trace" style="display: none;"> <pre><code><a class="trace-frames" data-frame-id="0" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call'</a><br><a class="trace-frames" data-frame-id="1" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'</a><br><a class="trace-frames" data-frame-id="2" href="#">railties (5.2.6) lib/rails/rack/logger.rb:38:in `call_app'</a><br><a class="trace-frames" data-frame-id="3" href="#">railties (5.2.6) lib/rails/rack/logger.rb:26:in `block in call'</a><br><a class="trace-frames" data-frame-id="4" href="#">activesupport (5.2.6) lib/active_support/tagged_logging.rb:71:in `block in tagged'</a><br><a class="trace-frames" data-frame-id="5" href="#">activesupport (5.2.6) lib/active_support/tagged_logging.rb:28:in `tagged'</a><br><a class="trace-frames" data-frame-id="6" href="#">activesupport (5.2.6) lib/active_support/tagged_logging.rb:71:in `tagged'</a><br><a class="trace-frames" data-frame-id="7" href="#">railties (5.2.6) lib/rails/rack/logger.rb:26:in `call'</a><br><a class="trace-frames" data-frame-id="8" href="#">sprockets-rails (3.2.2) lib/sprockets/rails/quiet_assets.rb:13:in `call'</a><br><a class="trace-frames" data-frame-id="9" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'</a><br><a class="trace-frames" data-frame-id="10" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/request_id.rb:27:in `call'</a><br><a class="trace-frames" data-frame-id="11" href="#">rack (2.2.3) lib/rack/method_override.rb:24:in `call'</a><br><a class="trace-frames" data-frame-id="12" href="#">rack (2.2.3) lib/rack/runtime.rb:22:in `call'</a><br><a class="trace-frames" data-frame-id="13" href="#">activesupport (5.2.6) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'</a><br><a class="trace-frames" data-frame-id="14" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/executor.rb:14:in `call'</a><br><a class="trace-frames" data-frame-id="15" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/static.rb:127:in `call'</a><br><a class="trace-frames" data-frame-id="16" href="#">rack (2.2.3) lib/rack/sendfile.rb:110:in `call'</a><br><a class="trace-frames" data-frame-id="17" href="#">railties (5.2.6) lib/rails/engine.rb:524:in `call'</a><br><a class="trace-frames" data-frame-id="18" href="#">rack (2.2.3) lib/rack/handler/webrick.rb:95:in `service'</a><br><a class="trace-frames" data-frame-id="19" href="#">/usr/local/lib/ruby/2.7.0/webrick/httpserver.rb:140:in `service'</a><br><a class="trace-frames" data-frame-id="20" href="#">/usr/local/lib/ruby/2.7.0/webrick/httpserver.rb:96:in `run'</a><br><a class="trace-frames" data-frame-id="21" href="#">/usr/local/lib/ruby/2.7.0/webrick/server.rb:307:in `block in start_thread'</a><br></code></pre> </div> <div id="Full-Trace" style="display: none;"> <pre><code><a class="trace-frames" data-frame-id="0" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call'</a><br><a class="trace-frames" data-frame-id="1" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'</a><br><a class="trace-frames" data-frame-id="2" href="#">railties (5.2.6) lib/rails/rack/logger.rb:38:in `call_app'</a><br><a class="trace-frames" data-frame-id="3" href="#">railties (5.2.6) lib/rails/rack/logger.rb:26:in `block in call'</a><br><a class="trace-frames" data-frame-id="4" href="#">activesupport (5.2.6) lib/active_support/tagged_logging.rb:71:in `block in tagged'</a><br><a class="trace-frames" data-frame-id="5" href="#">activesupport (5.2.6) lib/active_support/tagged_logging.rb:28:in `tagged'</a><br><a class="trace-frames" data-frame-id="6" href="#">activesupport (5.2.6) lib/active_support/tagged_logging.rb:71:in `tagged'</a><br><a class="trace-frames" data-frame-id="7" href="#">railties (5.2.6) lib/rails/rack/logger.rb:26:in `call'</a><br><a class="trace-frames" data-frame-id="8" href="#">sprockets-rails (3.2.2) lib/sprockets/rails/quiet_assets.rb:13:in `call'</a><br><a class="trace-frames" data-frame-id="9" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'</a><br><a class="trace-frames" data-frame-id="10" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/request_id.rb:27:in `call'</a><br><a class="trace-frames" data-frame-id="11" href="#">rack (2.2.3) lib/rack/method_override.rb:24:in `call'</a><br><a class="trace-frames" data-frame-id="12" href="#">rack (2.2.3) lib/rack/runtime.rb:22:in `call'</a><br><a class="trace-frames" data-frame-id="13" href="#">activesupport (5.2.6) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'</a><br><a class="trace-frames" data-frame-id="14" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/executor.rb:14:in `call'</a><br><a class="trace-frames" data-frame-id="15" href="#">actionpack (5.2.6) lib/action_dispatch/middleware/static.rb:127:in `call'</a><br><a class="trace-frames" data-frame-id="16" href="#">rack (2.2.3) lib/rack/sendfile.rb:110:in `call'</a><br><a class="trace-frames" data-frame-id="17" href="#">railties (5.2.6) lib/rails/engine.rb:524:in `call'</a><br><a class="trace-frames" data-frame-id="18" href="#">rack (2.2.3) lib/rack/handler/webrick.rb:95:in `service'</a><br><a class="trace-frames" data-frame-id="19" href="#">/usr/local/lib/ruby/2.7.0/webrick/httpserver.rb:140:in `service'</a><br><a class="trace-frames" data-frame-id="20" href="#">/usr/local/lib/ruby/2.7.0/webrick/httpserver.rb:96:in `run'</a><br><a class="trace-frames" data-frame-id="21" href="#">/usr/local/lib/ruby/2.7.0/webrick/server.rb:307:in `block in start_thread'</a><br></code></pre> </div> <script type="text/javascript"> var traceFrames = document.getElementsByClassName('trace-frames'); var selectedFrame, currentSource = document.getElementById('frame-source-0'); // Add click listeners for all stack frames for (var i = 0; i < traceFrames.length; i++) { traceFrames[i].addEventListener('click', function(e) { e.preventDefault(); var target = e.target; var frame_id = target.dataset.frameId; if (selectedFrame) { selectedFrame.className = selectedFrame.className.replace("selected", ""); } target.className += " selected"; selectedFrame = target; // Change the extracted source code changeSourceExtract(frame_id); }); function changeSourceExtract(frame_id) { var el = document.getElementById('frame-source-' + frame_id); if (currentSource && el) { currentSource.className += " hidden"; el.className = el.className.replace(" hidden", ""); currentSource = el; } } } </script> </div> <h2> Routes </h2> <p> Routes match in priority from top to bottom </p> <table id='route_table' class='route_table'> <thead> <tr> <th>Helper</th> <th>HTTP Verb</th> <th>Path</th> <th>Controller#Action</th> </tr> <tr class='bottom'> <th> <a data-route-helper="_path" title="Returns a relative path (without the http or domain)" href="#">Path</a> / <a data-route-helper="_url" title="Returns an absolute URL (with the http and domain)" href="#">Url</a> </th> <th> </th> <th> <input id="search" placeholder="Path Match" type="search" name="path[]" /> </th> <th> </th> </tr> </thead> <tbody class='exact_matches' id='exact_matches'> </tbody> <tbody class='fuzzy_matches' id='fuzzy_matches'> </tbody> <tbody> <tr class='route_row' data-helper='path'> <td data-route-name='root'> root<span class='helper'>_path</span> </td> <td> GET </td> <td data-route-path='/'> / </td> <td> <p>constituents#index</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name='constituents'> constituents<span class='helper'>_path</span> </td> <td> GET </td> <td data-route-path='/constituents(.:format)'> /constituents(.:format) </td> <td> <p>constituents#index</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name=''> </td> <td> POST </td> <td data-route-path='/constituents(.:format)'> /constituents(.:format) </td> <td> <p>constituents#create</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name='new_constituent'> new_constituent<span class='helper'>_path</span> </td> <td> GET </td> <td data-route-path='/constituents/new(.:format)'> /constituents/new(.:format) </td> <td> <p>constituents#new</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name='edit_constituent'> edit_constituent<span class='helper'>_path</span> </td> <td> GET </td> <td data-route-path='/constituents/:id/edit(.:format)'> /constituents/:id/edit(.:format) </td> <td> <p>constituents#edit</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name='constituent'> constituent<span class='helper'>_path</span> </td> <td> GET </td> <td data-route-path='/constituents/:id(.:format)'> /constituents/:id(.:format) </td> <td> <p>constituents#show</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name=''> </td> <td> PATCH </td> <td data-route-path='/constituents/:id(.:format)'> /constituents/:id(.:format) </td> <td> <p>constituents#update</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name=''> </td> <td> PUT </td> <td data-route-path='/constituents/:id(.:format)'> /constituents/:id(.:format) </td> <td> <p>constituents#update</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name=''> </td> <td> DELETE </td> <td data-route-path='/constituents/:id(.:format)'> /constituents/:id(.:format) </td> <td> <p>constituents#destroy</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name='map'> map<span class='helper'>_path</span> </td> <td> GET </td> <td data-route-path='/map(.:format)'> /map(.:format) </td> <td> <p>constituents#map</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name=''> </td> <td> GET </td> <td data-route-path='/constituents/a-z/:letter/page/:page(.:format)'> /constituents/a-z/:letter/page/:page(.:format) </td> <td> <p>constituents#a_z</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name=''> </td> <td> GET </td> <td data-route-path='/constituents/a-z/:letter(.:format)'> /constituents/a-z/:letter(.:format) </td> <td> <p>constituents#a_z</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name='export'> export<span class='helper'>_path</span> </td> <td> GET </td> <td data-route-path='/export(.:format)'> /export(.:format) </td> <td> <p>constituents#export</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name='search'> search<span class='helper'>_path</span> </td> <td> GET|POST </td> <td data-route-path='/search(.:format)'> /search(.:format) </td> <td> <p>constituents#search</p> </td> </tr> <tr class='route_row' data-helper='path'> <td data-route-name='save'> save<span class='helper'>_path</span> </td> <td> GET|POST </td> <td data-route-path='/save(.:format)'> /save(.:format) </td> <td> <p>feedback#save_spreadsheet</p> </td> </tr> </tbody> </table> <script type='text/javascript'> // support forEarch iterator on NodeList NodeList.prototype.forEach = Array.prototype.forEach; // Enables path search functionality function setupMatchPaths() { // Check if there are any matched results in a section function checkNoMatch(section, noMatchText) { if (section.children.length <= 1) { section.innerHTML += noMatchText; } } // get JSON from URL and invoke callback with result function getJSON(url, success) { var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.onload = function() { if (this.status == 200) success(JSON.parse(this.response)); }; xhr.send(); } function delayedKeyup(input, callback) { var timeout; input.onkeyup = function(){ if (timeout) clearTimeout(timeout); timeout = setTimeout(callback, 300); } } // remove params or fragments function sanitizePath(path) { return path.replace(/[#?].*/, ''); } var pathElements = document.querySelectorAll('#route_table [data-route-path]'), searchElem = document.querySelector('#search'), exactSection = document.querySelector('#exact_matches'), fuzzySection = document.querySelector('#fuzzy_matches'); // Remove matches when no search value is present searchElem.onblur = function(e) { if (searchElem.value === "") { exactSection.innerHTML = ""; fuzzySection.innerHTML = ""; } } // On key press perform a search for matching paths delayedKeyup(searchElem, function() { var path = sanitizePath(searchElem.value), defaultExactMatch = '<tr><th colspan="4">Paths Matching (' + path +'):</th></tr>', defaultFuzzyMatch = '<tr><th colspan="4">Paths Containing (' + path +'):</th></tr>', noExactMatch = '<tr><th colspan="4">No Exact Matches Found</th></tr>', noFuzzyMatch = '<tr><th colspan="4">No Fuzzy Matches Found</th></tr>'; if (!path) return searchElem.onblur(); getJSON('/rails/info/routes?path=' + path, function(matches){ // Clear out results section exactSection.innerHTML = defaultExactMatch; fuzzySection.innerHTML = defaultFuzzyMatch; // Display exact matches and fuzzy matches pathElements.forEach(function(elem) { var elemPath = elem.getAttribute('data-route-path'); if (matches['exact'].indexOf(elemPath) != -1) exactSection.appendChild(elem.parentNode.cloneNode(true)); if (matches['fuzzy'].indexOf(elemPath) != -1) fuzzySection.appendChild(elem.parentNode.cloneNode(true)); }) // Display 'No Matches' message when no matches are found checkNoMatch(exactSection, noExactMatch); checkNoMatch(fuzzySection, noFuzzyMatch); }) }) } // Enables functionality to toggle between `_path` and `_url` helper suffixes function setupRouteToggleHelperLinks() { // Sets content for each element function setValOn(elems, val) { elems.forEach(function(elem) { elem.innerHTML = val; }); } // Sets onClick event for each element function onClick(elems, func) { elems.forEach(function(elem) { elem.onclick = func; }); } var toggleLinks = document.querySelectorAll('#route_table [data-route-helper]'); onClick(toggleLinks, function(){ var helperTxt = this.getAttribute("data-route-helper"), helperElems = document.querySelectorAll('[data-route-name] span.helper'); setValOn(helperElems, helperTxt); }); } setupMatchPaths(); setupRouteToggleHelperLinks(); </script> <h2 style="margin-top: 30px">Request</h2> <p><b>Parameters</b>:</p> <pre>None</pre> <div class="details"> <div class="summary"><a href="#" onclick="return toggleSessionDump()">Toggle session dump</a></div> <div id="session_dump" style="display:none"><pre></pre></div> </div> <div class="details"> <div class="summary"><a href="#" onclick="return toggleEnvDump()">Toggle env dump</a></div> <div id="env_dump" style="display:none"><pre>GATEWAY_INTERFACE: "CGI/1.1" HTTP_ACCEPT: "*/*" HTTP_ACCEPT_ENCODING: "gzip" HTTP_VERSION: "HTTP/1.1" HTTP_X_FORWARDED_FOR: "8.222.208.146, 198.143.39.38" ORIGINAL_SCRIPT_NAME: "" REMOTE_ADDR: "10.232.18.16" REMOTE_HOST: "10.232.18.16" SERVER_NAME: "pic.nypl.org" SERVER_PROTOCOL: "HTTP/1.1"</pre></div> </div> <h2 style="margin-top: 30px">Response</h2> <p><b>Headers</b>:</p> <pre>None</pre> </div> <script type="text/javascript" src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3&ns=1&cb=1662917578" async></script></body> </html>