<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ravi Katta</title>
    <description>The latest articles on DEV Community by Ravi Katta (@kattak2k).</description>
    <link>https://dev.to/kattak2k</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F303897%2Ff75fef07-b47a-4211-be3a-d291be674eed.jpeg</url>
      <title>DEV Community: Ravi Katta</title>
      <link>https://dev.to/kattak2k</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kattak2k"/>
    <language>en</language>
    <item>
      <title>How to Add a favicon to the site  in Rails 6 using Webpacker</title>
      <dc:creator>Ravi Katta</dc:creator>
      <pubDate>Mon, 06 Jul 2020 00:18:03 +0000</pubDate>
      <link>https://dev.to/kattak2k/adding-a-favicon-to-your-site-using-webpacker-in-rails-6-2m2h</link>
      <guid>https://dev.to/kattak2k/adding-a-favicon-to-your-site-using-webpacker-in-rails-6-2m2h</guid>
      <description>&lt;p&gt;In Rails 6, Adding an icon to the HTML tab is very easy with 3 simple steps.&lt;/p&gt;

&lt;p&gt;1) Add an image&lt;br&gt;
 2) Reference an image&lt;br&gt;
 3) Link an image to HTML head&lt;/p&gt;

&lt;p&gt;For the basic understanding on Webpacker, you  may refer the useful guide by Chris Oliver (&lt;a href="https://gorails.com/episodes/using-webpack-in-rails-with-webpacker-gem"&gt;Webpacker Setup&lt;/a&gt;) &lt;/p&gt;
&lt;h3&gt;
  
  
  Here is how our directory structure would look like.
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app
 |-controllers
 |-javascript
     |-images
         |-brand_icon.png
         |-brand_icon.ico
     |-packs
          |- application.js
     |-stylesheets 
          |- applicaiton.scss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  1) Add an image &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The images directory will hold all the images that we link in the project. We can add a types &lt;em&gt;.png, .ico, or .jpeg&lt;/em&gt;, but I'd prefer &lt;em&gt;.png&lt;/em&gt; as it supports better colors.&lt;/p&gt;

&lt;p&gt;Let us save a home image as brand_icon.png to app/javascript/images/*&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O4pFYw3e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.icons8.com/fluent/48/000000/home.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O4pFYw3e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.icons8.com/fluent/48/000000/home.png" alt="Brand_icon" title="Brand Icon"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2) Reference an image &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Declare a constant in &lt;em&gt;packs/application.js&lt;/em&gt; file, to refer all the images in  &lt;em&gt;javascript/images&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.../images&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, with this reference, we can embed all the images in our HTML with a pack tag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt; &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;image_pack_tag&lt;/span&gt; &lt;span class="s1"&gt;'example.png'&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3) Link an image to HTML head &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Don't forget to link the JavaScript pack in Rails views using the javascript_pack_tag helper.&lt;/p&gt;

&lt;p&gt;Now finally, embed the newly downloaded home_icon in HTML view with a helper method favicon_pack_tag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;javascript_pack_tag&lt;/span&gt; &lt;span class="s1"&gt;'application'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'data-turbo-links-track'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'reload'&lt;/span&gt;&lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;favicon_pack_tag&lt;/span&gt; &lt;span class="s1"&gt;'brand_icon.png'&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After compiling, the HTML would look like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt; &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"shortcut icon"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"image/x-icon"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"pack/media/images/brand-icon-a3423sf.png"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As we can see the icon is being pointed to the image in the pack directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wXjbcNEK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/53492744/86545305-f681ec80-befb-11ea-8966-b36ccfa29b29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wXjbcNEK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/53492744/86545305-f681ec80-befb-11ea-8966-b36ccfa29b29.png" alt="home_tab_icon"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all we need, CHEERS!!&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>webpack</category>
      <category>rails</category>
      <category>html</category>
    </item>
    <item>
      <title>Which is a best-advanced Udemy course on the Javascript?</title>
      <dc:creator>Ravi Katta</dc:creator>
      <pubDate>Thu, 16 Apr 2020 00:57:11 +0000</pubDate>
      <link>https://dev.to/kattak2k/which-is-a-best-advanced-course-on-the-javascript-udemy-course-2016</link>
      <guid>https://dev.to/kattak2k/which-is-a-best-advanced-course-on-the-javascript-udemy-course-2016</guid>
      <description>&lt;p&gt;Can anyone suggest the best courses to learn on Udemy? As it's a lot confusing to find the bunch of similar courses.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;advanced Javascript &lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;node and &lt;/li&gt;
&lt;li&gt;AWS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;1.Advanced Javascript:&lt;br&gt;
  a. One of the best to understand the weird parts -&amp;gt; &lt;br&gt;
 &lt;a href="https://cognizant.udemy.com/course/advanced-javascript-concepts/learn/lecture/13512858?start=15#content"&gt;Advance Javascript Concepts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;b. Reference book: &lt;a href="https://github.com/petyakostova/IT-Books/blob/master/JavaScript/You%20Don't%20Know%20JS%20-%20Kyle%20Simpson/You%20Don't%20Know%20JS%20(book%20series)%20-%20Kyle%20Simpson.pdf"&gt;You don't know Js&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ajax loading spinner in Rails with Javascript's events &amp; mutation observer</title>
      <dc:creator>Ravi Katta</dc:creator>
      <pubDate>Sun, 19 Jan 2020 23:35:07 +0000</pubDate>
      <link>https://dev.to/kattak2k/ajax-loading-spinner-in-rails-with-javascript-s-events-mutation-observer-6f8</link>
      <guid>https://dev.to/kattak2k/ajax-loading-spinner-in-rails-with-javascript-s-events-mutation-observer-6f8</guid>
      <description>&lt;p&gt;This blog post is intended for intermediate programmers who have prior knowledge of rails ajax forms and javascript events.&lt;/p&gt;

&lt;p&gt;There are tons of articles that explain the way to do the AJAX loader using &lt;strong&gt;JQuery&lt;/strong&gt; but how can we solve it with javascript? This thought made me write this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layout
&lt;/h2&gt;

&lt;p&gt;Here we will be building a layout having an account as input and search button to show the list of matching accounts and the loader icon would show and hide during DOM events.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mh9_YM9H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/19718351/72675924-663d1180-3a59-11ea-938f-d73a99cc693b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mh9_YM9H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/19718351/72675924-663d1180-3a59-11ea-938f-d73a99cc693b.png" alt="layout"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Events
&lt;/h2&gt;

&lt;p&gt;Our main objective is to display a loading spinner during page loading or the time when accounts are being fetched from the backend. So, to fit the spinner in, we can think of 2 two main scenarios &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To show a spinner, when a search button is pressed&lt;/li&gt;
&lt;li&gt;and to hide it back, when a child is added to a DOM element via Rails AJAX&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Setup: Routes, Controllers and Views
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;I'm not going through the code in detail as it would make the blog lengthy.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  First,
&lt;/h3&gt;

&lt;p&gt;We define a route to new and search actions&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;draw&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="ss"&gt;to: &lt;/span&gt;&lt;span class="s1"&gt;'accounts#new'&lt;/span&gt;

  &lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:accounts&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;collection&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;post&lt;/span&gt; &lt;span class="s1"&gt;'search'&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Second,
&lt;/h3&gt;

&lt;p&gt;Rendering js when a search action has occurred and sleep is added to delay the backend fetching time to see the loading spinner.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AccountsController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt;
    &lt;span class="vi"&gt;@accounts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search&lt;/span&gt;
    &lt;span class="vi"&gt;@accounts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"name LIKE ?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"%&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;new_params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;%"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;respond_to&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;js&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="kp"&gt;private&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;new_params&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:account&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;permit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Third,
&lt;/h3&gt;

&lt;p&gt;The View will make three things: one a search js, the other a partial and the last one for the main view&lt;/p&gt;

&lt;p&gt;1) The partial &lt;strong&gt;_accounts.html.erb&lt;/strong&gt; will be added as a child to the main DOM element via AJAX.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;table&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"table"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;thead&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"thead-dark"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;th&lt;/span&gt; &lt;span class="na"&gt;scope=&lt;/span&gt;&lt;span class="s"&gt;"col"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Account Name&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;th&lt;/span&gt; &lt;span class="na"&gt;scope=&lt;/span&gt;&lt;span class="s"&gt;"col"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Country&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;th&lt;/span&gt; &lt;span class="na"&gt;scope=&lt;/span&gt;&lt;span class="s"&gt;"col"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; State&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/thead&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;tbody&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;accounts.each&lt;/span&gt; &lt;span class="na"&gt;do&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="na"&gt;acct&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="na"&gt;v&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;td&lt;/span&gt; &lt;span class="na"&gt;scope=&lt;/span&gt;&lt;span class="s"&gt;"row"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt;&lt;span class="na"&gt;acct.name&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt; 
        &lt;span class="nt"&gt;&amp;lt;td&lt;/span&gt; &lt;span class="na"&gt;scope=&lt;/span&gt;&lt;span class="s"&gt;"row"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt;&lt;span class="na"&gt;acct.country&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt; 
        &lt;span class="nt"&gt;&amp;lt;td&lt;/span&gt; &lt;span class="na"&gt;scope=&lt;/span&gt;&lt;span class="s"&gt;"row"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt;&lt;span class="na"&gt;acct.state&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt; 
      &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="na"&gt;end&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/tbody&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;2) The main view &lt;strong&gt;new.html.erb&lt;/strong&gt;, will have an input field, a search button wrapped in a form with &lt;strong&gt;remote: true&lt;/strong&gt; option, and an empty div &lt;strong&gt;accounts-details&lt;/strong&gt; for displaying the accounts list&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-info"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Find Accounts&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"shadow-sm p-3 mb-5 bg-white rounded"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;form_for&lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;accounts&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;url:&lt;/span&gt; &lt;span class="na"&gt;search_accounts_path&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;method:&lt;/span&gt; &lt;span class="na"&gt;:post&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;remote:&lt;/span&gt; &lt;span class="na"&gt;true&lt;/span&gt; &lt;span class="err"&gt;)&lt;/span&gt; &lt;span class="na"&gt;do&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="na"&gt;f&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
         &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;label_tag&lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="na"&gt;:name&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="na"&gt;Account&lt;/span&gt; &lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="err"&gt;')&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
         &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;f.text_field&lt;/span&gt; &lt;span class="na"&gt;:name&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;required:&lt;/span&gt; &lt;span class="na"&gt;true&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;   

    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group form-check"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; 
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"actions"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-info"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;f.submit&lt;/span&gt;&lt;span class="err"&gt;("&lt;/span&gt;&lt;span class="na"&gt;Search&lt;/span&gt;&lt;span class="err"&gt;")&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="na"&gt;end&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- List will added as child when a search button is clicked--&amp;gt;&lt;/span&gt; 
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"accounts-details"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;3) The &lt;strong&gt;search.js.erb&lt;/strong&gt; will do the magic by adding the partial *&lt;em&gt;**_accounts.html.erb&lt;/em&gt;* as a child to an empty div &lt;strong&gt;accounts-details&lt;/strong&gt; in the main view.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#accounts-details&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;%= j render partial: 'accounts', locals: { accounts: @accounts } %&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;4) A modal dialog box to hold the loading spinner&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container-md"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;yield&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"myModal"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-center"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"spinner-border"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"status"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sr-only"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Loading...&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Finally a loading spinner
&lt;/h2&gt;

&lt;p&gt;a. Display a loading spinner on submit event listener&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="c1"&gt;// Get the Id of the form&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;searchButton&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;new_account&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Get the Id of a loading spinner modal&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;modal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myModal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;displayModal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//e.preventDefault();&lt;/span&gt;
    &lt;span class="nx"&gt;modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;block&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Listen the submit click on the form and call display spinner&lt;/span&gt;
&lt;span class="nx"&gt;searchButton&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;submit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;displayModal&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;b. Hiding a loading spinner on when a DOM element is added by using Mutation observer&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Get the ID of empty div&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;accountsDiv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;accounts-details&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Get the Id of a loading spinner modal&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;modal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myModal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

 &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;hideModal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// callback function will return the list of things changed an entry DIV. // In our case, a *childList* will be returned true, as we as adding partial.&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mutations&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;mutations&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;childList&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="nx"&gt;hideModal&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt; 
  &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Configuration for the observer to listen to the DOM changes&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;attributes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;subtree&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;childList&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Initializing a mutation observer&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;MutationObserver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// The main Listener to see DOM element changes&lt;/span&gt;
  &lt;span class="nx"&gt;observer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;accountsDiv&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Note: As the event listener 'DOMNodeInserted' has drawbacks and so are using Mutation observer&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="nx"&gt;accountsDiv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DOMNodeInserted&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;hideModal&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;and Finally, Wrap all the logic in &lt;strong&gt;DOMContentLoaded&lt;/strong&gt; event listener.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DOMContentLoaded&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;domLoaded&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Complete logic
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kattak2k"&gt;
        kattak2k
      &lt;/a&gt; / &lt;a href="https://github.com/kattak2k/ajax-rails-js-observer"&gt;
        ajax-rails-js-observer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      loading spinner with ajax form
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;That's all, Thanks for reading!!&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver"&gt;https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/EventListener"&gt;https://developer.mozilla.org/en-US/docs/Web/API/EventListener&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.rubyguides.com/2019/03/rails-ajax/"&gt;https://www.rubyguides.com/2019/03/rails-ajax/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title> Ruby vs Javascript vs Python : Syntax &amp; Semantics</title>
      <dc:creator>Ravi Katta</dc:creator>
      <pubDate>Thu, 02 Jan 2020 05:34:46 +0000</pubDate>
      <link>https://dev.to/kattak2k/cheatsheet-ruby-vs-javascript-vs-python-1ffi</link>
      <guid>https://dev.to/kattak2k/cheatsheet-ruby-vs-javascript-vs-python-1ffi</guid>
      <description>&lt;p&gt;An analogy between the Ruby, Javascript, and Python languages&lt;/p&gt;

&lt;h3&gt;
  
  
  Table Of Contents
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Basics Intro&lt;/li&gt;
&lt;li&gt;Arrays Functions&lt;/li&gt;
&lt;li&gt;Compound Arrays&lt;/li&gt;
&lt;li&gt;String Functions&lt;/li&gt;
&lt;li&gt;Numerical Functions&lt;/li&gt;
&lt;li&gt;Logical Conditions&lt;/li&gt;
&lt;li&gt;Class and Methods or Functions&lt;/li&gt;
&lt;li&gt;Regular expression (Regex)&lt;/li&gt;
&lt;li&gt;Type Conversion&lt;/li&gt;
&lt;li&gt;Heredocs&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="intro"&gt;Basics Intro &lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Start Cli&lt;/td&gt;
&lt;td&gt;irb&lt;/td&gt;
&lt;td&gt;python&lt;/td&gt;
&lt;td&gt;node&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integers &amp;amp; floats declaration&lt;/td&gt;
&lt;td&gt;x = 1 ; y = 0.23&lt;/td&gt;
&lt;td&gt;let x = 1; var y = 0.23&lt;/td&gt;
&lt;td&gt;x = 1 ; y = 0.23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contants Declaration&lt;/td&gt;
&lt;td&gt;W = 'ruby'.freeze&lt;/td&gt;
&lt;td&gt;const w = 'js'&lt;/td&gt;
&lt;td&gt;W = 'ruby'&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Variables in strings&lt;/td&gt;
&lt;td&gt;"one is #{x}"&lt;/td&gt;
&lt;td&gt;&lt;code&gt;one is ${w}\&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;"one is {}".format(x)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Line Comment&lt;/td&gt;
&lt;td&gt;# this is comment&lt;/td&gt;
&lt;td&gt;// this is comment&lt;/td&gt;
&lt;td&gt;# this is comment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Block comments&lt;/td&gt;
&lt;td&gt;=being ;  =end&lt;/td&gt;
&lt;td&gt;/* block comment */&lt;/td&gt;
&lt;td&gt;''' block comment '''&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;write output&lt;/td&gt;
&lt;td&gt;puts 'write output'&lt;/td&gt;
&lt;td&gt;console.log('write output')document.write("write HTML")&lt;/td&gt;
&lt;td&gt;print('write output')&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arrays , Lists&lt;/td&gt;
&lt;td&gt;arr = [1,'a',true] ; arr = Array.new&lt;/td&gt;
&lt;td&gt;let arr = [1,'a',true]&lt;/td&gt;
&lt;td&gt;arr = [1,'a',True]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hashes, Objects, dictionaries&lt;/td&gt;
&lt;td&gt;hash = { 'a' =&amp;gt; 2, :b =&amp;gt; 4 }&lt;/td&gt;
&lt;td&gt;var obj = { 1 : 2 , 'a' : 4}&lt;/td&gt;
&lt;td&gt;dict = {1: 2, 'd': 'e' }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Destructuring&lt;/td&gt;
&lt;td&gt;a,b,c = [2,3,4] ; p b&lt;/td&gt;
&lt;td&gt;var {x : a , y: b} = {x : 1, y : 2} ; console.log(b)&lt;/td&gt;
&lt;td&gt;a,b,c = [2,3,4]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="functions"&gt;Arrays Functions &lt;/h3&gt;

&lt;p&gt;&lt;em&gt;where x is [3,4,5,6,7,8]&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Remove last element&lt;/td&gt;
&lt;td&gt;x.pop&lt;br&gt;x.pop(2)&lt;/td&gt;
&lt;td&gt;x.pop()&lt;/td&gt;
&lt;td&gt;x.pop()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remove first element&lt;/td&gt;
&lt;td&gt;x.shift(9)&lt;/td&gt;
&lt;td&gt;x.shift()&lt;/td&gt;
&lt;td&gt;x.remove(x[0])&lt;br&gt;del x[0]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add last element&lt;/td&gt;
&lt;td&gt;x.push(9)&lt;br&gt;x.append(9)&lt;br&gt; x &amp;lt;&amp;lt; 9&lt;/td&gt;
&lt;td&gt;x.push(9)&lt;br&gt;y.concat(5)&lt;/td&gt;
&lt;td&gt;x.append(9); x.extend([9]); x.insert(len(x), 9)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add first element&lt;/td&gt;
&lt;td&gt;x.unshift(2)&lt;/td&gt;
&lt;td&gt;x.unshift(2)&lt;/td&gt;
&lt;td&gt;x.insert(0,2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sort&lt;/td&gt;
&lt;td&gt;x.sort&lt;/td&gt;
&lt;td&gt;x.sort()&lt;/td&gt;
&lt;td&gt;x.sort()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reverse&lt;/td&gt;
&lt;td&gt;x.reverse&lt;/td&gt;
&lt;td&gt;x.reverse()&lt;/td&gt;
&lt;td&gt;x.reverse()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Count&lt;/td&gt;
&lt;td&gt;x.count(6)&lt;/td&gt;
&lt;td&gt;var count = {}; &lt;br&gt; y.forEach(val =&amp;gt; count[val] = (count[val] \&lt;/td&gt;
&lt;td&gt;\&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Length&lt;/td&gt;
&lt;td&gt;x.length; x.size; x.count&lt;/td&gt;
&lt;td&gt;y.length&lt;/td&gt;
&lt;td&gt;len(y)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximum&lt;/td&gt;
&lt;td&gt;x.max&lt;/td&gt;
&lt;td&gt;Math.max(...x)&lt;/td&gt;
&lt;td&gt;max(x)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimum&lt;/td&gt;
&lt;td&gt;x.min&lt;/td&gt;
&lt;td&gt;Math.min(...x)&lt;/td&gt;
&lt;td&gt;min(x)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;index&lt;/td&gt;
&lt;td&gt;x.index(3)&lt;/td&gt;
&lt;td&gt;x.indexOf(3)&lt;/td&gt;
&lt;td&gt;x.index(3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;insert&lt;/td&gt;
&lt;td&gt;x.insert(2, 'Feb')&lt;/td&gt;
&lt;td&gt;x.splice(1, 0, 'Feb')&lt;/td&gt;
&lt;td&gt;x.insert(2, 'Feb')&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Make a copy&lt;/td&gt;
&lt;td&gt;y = x.dup&lt;/td&gt;
&lt;td&gt;let y = [...x]&lt;/td&gt;
&lt;td&gt;y = x[:]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Select, filter&lt;/td&gt;
&lt;td&gt;x.select{\&lt;/td&gt;
&lt;td&gt;el\&lt;/td&gt;
&lt;td&gt;el &amp;gt; 4 }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reduce&lt;/td&gt;
&lt;td&gt;x.reduce(:+)&lt;/td&gt;
&lt;td&gt;lx.reduce((result,el)=&amp;gt; result + el,0)&lt;/td&gt;
&lt;td&gt;reduce(lambda result,y: result + y, x)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Map&lt;/td&gt;
&lt;td&gt;x.map{\&lt;/td&gt;
&lt;td&gt;el\&lt;/td&gt;
&lt;td&gt;el*2}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Each&lt;/td&gt;
&lt;td&gt;z = []    x.each{\&lt;/td&gt;
&lt;td&gt;el\&lt;/td&gt;
&lt;td&gt;z &amp;lt;&amp;lt; el*2}  p z&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reverse loop&lt;/td&gt;
&lt;td&gt;z = []    x.reverse_each{\&lt;/td&gt;
&lt;td&gt;el\&lt;/td&gt;
&lt;td&gt;z &amp;lt;&amp;lt; el*2}  p z&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clear , Reset&lt;/td&gt;
&lt;td&gt;x.clear&lt;/td&gt;
&lt;td&gt;x = []&lt;/td&gt;
&lt;td&gt;del x[:]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="multiple"&gt;Compound arrays &lt;/h3&gt;

&lt;p&gt;&lt;em&gt;where, x is [1,2,3] &amp;amp; y is [2,4,5,6]&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Intersection&lt;/td&gt;
&lt;td&gt;x &amp;amp; y #=&amp;gt; [2]&lt;/td&gt;
&lt;td&gt;x.filter(e =&amp;gt; y.includes(e))&lt;/td&gt;
&lt;td&gt;list(set(x) &amp;amp; set(y))&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Union&lt;/td&gt;
&lt;td&gt;x \&lt;/td&gt;
&lt;td&gt;yx.union(y)&lt;/td&gt;
&lt;td&gt;var z = [...x,...y][...new Set( z )] 'or'Array.from(new Set(z))&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Join&lt;/td&gt;
&lt;td&gt;x + y&lt;/td&gt;
&lt;td&gt;[...x,...y]&lt;/td&gt;
&lt;td&gt;x + y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Difference&lt;/td&gt;
&lt;td&gt;x - y&lt;/td&gt;
&lt;td&gt;x.filter(e =&amp;gt; !y.includes(e));&lt;/td&gt;
&lt;td&gt;list(set(x) - set(y))&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="strings"&gt;Strings Functions&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;where, s = 'Cheat sheet   '&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UpperCase&lt;/td&gt;
&lt;td&gt;s.upcase&lt;/td&gt;
&lt;td&gt;s.toUpperCase()&lt;/td&gt;
&lt;td&gt;s.upper()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LowerCase&lt;/td&gt;
&lt;td&gt;s.downcase&lt;/td&gt;
&lt;td&gt;s.toLowerCase()&lt;/td&gt;
&lt;td&gt;s.upper()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SwapCase&lt;/td&gt;
&lt;td&gt;s.swapcase&lt;/td&gt;
&lt;td&gt;NA&lt;/td&gt;
&lt;td&gt;s.swapcase()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trim&lt;/td&gt;
&lt;td&gt;s.strip!&lt;/td&gt;
&lt;td&gt;s.trim()&lt;/td&gt;
&lt;td&gt;s.strip()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StartsWith&lt;/td&gt;
&lt;td&gt;s.start_with?('cheat')&lt;/td&gt;
&lt;td&gt;s.startsWith('Cheat')&lt;/td&gt;
&lt;td&gt;s.startswith('Cheat')&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repeat&lt;/td&gt;
&lt;td&gt;'Hi ' * 3&lt;/td&gt;
&lt;td&gt;'Hi '.repeat(3)&lt;/td&gt;
&lt;td&gt;'Hi ' * 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Split&lt;/td&gt;
&lt;td&gt;'asdf'.split('')&lt;/td&gt;
&lt;td&gt;'asdf'.split('')&lt;/td&gt;
&lt;td&gt;list('asdf')  'a#s#d'.split('#')&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Join&lt;/td&gt;
&lt;td&gt;['a','s','d','f'].join()&lt;/td&gt;
&lt;td&gt;["a", "s", "d", "f"].join('')&lt;/td&gt;
&lt;td&gt;''.join(['a','s','d'])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Replace&lt;/td&gt;
&lt;td&gt;s.replace('Hey')&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Find&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Count&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="numeric"&gt;Numerical Functions&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;where, el = -22.45&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ceil&lt;/td&gt;
&lt;td&gt;el.ceil&lt;/td&gt;
&lt;td&gt;Math.ceil(el)&lt;/td&gt;
&lt;td&gt;import math math.ceil(el)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Floor&lt;/td&gt;
&lt;td&gt;el.floor&lt;/td&gt;
&lt;td&gt;Math.floor(el)&lt;/td&gt;
&lt;td&gt;math.floor(el)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Round&lt;/td&gt;
&lt;td&gt;el.round(1)&lt;/td&gt;
&lt;td&gt;Math.round(el)&lt;/td&gt;
&lt;td&gt;round(el)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Absolute&lt;/td&gt;
&lt;td&gt;el.abs&lt;/td&gt;
&lt;td&gt;Math.abs(el)&lt;/td&gt;
&lt;td&gt;abs(el)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Random&lt;/td&gt;
&lt;td&gt;rand(10)&lt;/td&gt;
&lt;td&gt;Math.ceil(Math.random(10) * 11)&lt;/td&gt;
&lt;td&gt;import random random.randrange(1,10)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero&lt;/td&gt;
&lt;td&gt;el.zero?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Negative&lt;/td&gt;
&lt;td&gt;el.negative?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="conditions"&gt;Logical Conditions&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;If&lt;/td&gt;
&lt;td&gt;if elsif  else  end&lt;/td&gt;
&lt;td&gt;if : elif :  else:&lt;/td&gt;
&lt;td&gt;if () {} else if () {} else {}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;case&lt;/td&gt;
&lt;td&gt;case a when else  end&lt;/td&gt;
&lt;td&gt;switch(expression) {case x:break;case y: break; default:}&lt;/td&gt;
&lt;td&gt;NA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ternary Operator&lt;/td&gt;
&lt;td&gt;true == false ? 1 : 2&lt;/td&gt;
&lt;td&gt;true == false ? 1 : 2&lt;/td&gt;
&lt;td&gt;1 if (True == False) else 2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="cmf"&gt;Class and Methods or Functions&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Instance Methods&lt;/td&gt;
&lt;td&gt;def name(input) p inputend&lt;/td&gt;
&lt;td&gt;name = function(input) {return &lt;code&gt;${input}&lt;/code&gt;;}  name = (input) =&amp;gt; "input"&lt;/td&gt;
&lt;td&gt;def name(input): print("This is " + input)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static Methods&lt;/td&gt;
&lt;td&gt;def self.age(input) p inputend&lt;/td&gt;
&lt;td&gt;static age(input) {return &lt;code&gt;${input}&lt;/code&gt;;}&lt;/td&gt;
&lt;td&gt;@classmethod def age(input): print("This is " + input)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Class&lt;/td&gt;
&lt;td&gt;class Personattr_accessor :name def initialize(name)@name = nameendend&lt;/td&gt;
&lt;td&gt;class Person {constructor(name) {this.name = name;}}&lt;/td&gt;
&lt;td&gt;class Person:def &lt;strong&gt;init&lt;/strong&gt;(self, name):self.name = name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;create instance Object&lt;/td&gt;
&lt;td&gt;p = Person.new('Bezos')&lt;/td&gt;
&lt;td&gt;let p = new Person("Bezos")let p1 = Object.create(Person)&lt;/td&gt;
&lt;td&gt;p = Person("Bezos")&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Single Inheritance&lt;/td&gt;
&lt;td&gt;class Employee &amp;lt; Persondef initialize(name)super name@name = nameendend&lt;/td&gt;
&lt;td&gt;class Employee extends Person {constructor(name) {  super(name)this.name = name;}}&lt;/td&gt;
&lt;td&gt;class Employee(Person):def &lt;strong&gt;init&lt;/strong&gt;(self, name):self.name = name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multiple Inheritance&lt;/td&gt;
&lt;td&gt;module Studentdef walkendend  class Personinclude Humanend&lt;/td&gt;
&lt;td&gt;class Student extends Person&lt;/td&gt;
&lt;td&gt;class Student(Person):&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;default values&lt;/td&gt;
&lt;td&gt;def name(input='bezos') end&lt;/td&gt;
&lt;td&gt;function(input='bezos')&lt;/td&gt;
&lt;td&gt;def name(input='bezos')&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="regex"&gt;Regular expression (Regex)&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;where, lx = "titan titan titan"&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;First occurrence&lt;/td&gt;
&lt;td&gt;lx.match(/t[a-z]*n/)[0]&lt;/td&gt;
&lt;td&gt;(/t[a-z]*n/).test(lx) //=&amp;gt; true&lt;/td&gt;
&lt;td&gt;import rere.search("t[a-z]*n", lx).group()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All occurrences&lt;/td&gt;
&lt;td&gt;lx.scan(/t[a-z]*n/)&lt;/td&gt;
&lt;td&gt;lx.match(/t[a-z]*n/gi)&lt;/td&gt;
&lt;td&gt;re.findall("t[a-z]*n",lx)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="convert"&gt;Type Conversion&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;string to Integer  &lt;em&gt;where, str2int = \'99\'&lt;em&gt;&lt;/em&gt;&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;str2int.to_i&lt;/td&gt;
&lt;td&gt;int(str2int)&lt;/td&gt;
&lt;td&gt;parseInt(str2int) Number(str2int)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integer to string &lt;em&gt;where, int2str = 66&lt;em&gt;&lt;/em&gt;&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;int2str.to_s&lt;/td&gt;
&lt;td&gt;str(int2str)&lt;/td&gt;
&lt;td&gt;int2str.toString()&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3 id="heredoc"&gt;Heredocs&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Javascript&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Multiline string&lt;/td&gt;
&lt;td&gt;content = &amp;lt;&amp;lt;~HEREDOCI welcome your contributions.please suggesta topic or report an issueHEREDOCp content&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;content = """ I welcome your contributions.please suggesta topic or report an issue"""print(content)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
  </channel>
</rss>
