link_toメソッドにajaxリクエストを指定する (EOTD No.14)

2 min read読了の目安(約1800字

こちらAmetaです!今年最後のError Of The Dayです。

本日のエラー

シチュエーション

昨日の記事の実装を実際に試して見た時に発生したエラーです。

https://zenn.dev/swata_dev/articles/c51f3b781c916d

以下の部分テンプレートをjavascript形式のリクエストで呼び出すようにするように実装しました。

#app/views/dishes/_like.html.erb

<% if current_user.liked_by?(dish.id) %>
    <div class="heart-icon-align">
      <%= link_to image_tag("heart_filled.png", size: '20x20'), destroy_like_path(dish), method: :DELETE %>
      <span class='heart-count-dishes'><%= dish.likes.count %></span>
    </div>
  <% else %>
    <div class="heart-icon-align">
      <%= link_to image_tag("heart.png", size: '20x20'), create_like_path(dish), method: :POST %>
      <span class='heart-count-dishes'><%= dish.likes.count %></span>
    </div>
  <% end %>

likes_controllerのcreateアクションを実行した時に、今回のエラー画面が。

<%= link_to image_tag("heart.png", size: '20x20'), create_like_path(dish), method: :POST %>

以上のリンクをクリックした時にエラーが発生しました。

解決

remoteオプションERBタグ内の最後に追記したところ正常に作動しました。

<%= link_to image_tag("heart.png", size: '20x20'), create_like_path(dish), method: :POST, remoete: true %>

https://guides.rubyonrails.org/working_with_javascript_in_rails.html

こちらのRailsガイドによると

<%= link_to "an article", @article, remote: true %>

はhtmlにおける

<a href="/articles/1" data-remote="true">an article</a>

と同じ扱いになるということです。

data-remoteについても調べて見ました。

https://stackoverflow.com/questions/28354969/html-what-does-data-remote-true-do

data-remote = "true" is used by the Ruby On Rails framework to submit the form/link/button as an ajax request.

ajaxリクエストを送る事ができるRuby On Railsのフレイムワーク。
linkの他にもformやbuttonにも使用する事ができるみたいです。

SOTD(Summary Of The Day)

今日までドキュメントにjavascriptを書いて実装をしてきましたが、それではできることに限界があることに気がついてきました。

来年は実装の幅を広げるためにも,jqueryなどのフレームワークに挑戦していきたいです。

それでは皆さん良いお年を。。