[RUBY] So implementieren Sie eine ähnliche Funktion in Rails

Ich werde Ihnen zeigen, wie Sie die Like-Funktion in Rails implementieren. Das fertige System sieht wie folgt aus. いいね1.gif

Umgebung

Annahme

Wie Modell hinzugefügt

$ rails g model like user_id:integer post_id:integer

$ rails db:migrate

Assoziation einrichten

Beschreiben Sie jeweils Folgendes und legen Sie die Zuordnung fest.

like.rb


  belongs_to :user
  belongs_to :post

user.rb


  has_many :likes, dependent: :destroy

post.rb


  has_many :likes, dependent: :destroy

Routing einrichten

routes.rb


  resources :posts, shallow: true do
    resources :likes, only: [:create, :destroy]
  end

Erstellen Sie die Methode liked_by?

post.rb


  def liked_by?(user)
    likes.where(user_id: user.id).exists?
  end

Beschreibung der Steuerung

likes_controller.rb


  def create
    like = Like.new(user_id: current_user.id, post_id: params[:post_id])
    @post = like.post
    like.save
    redirect_back(fallback_location: posts_path)
  end

  def destroy
    like = Like.find(params[:id])
    @post = like.post
    like.destroy
    redirect_back(fallback_location: posts_path)
  end

Bootstrap eingeführt

Gemfile


gem 'bootstrap-sass', '~> 3.3.6'
gem 'jquery-rails'
$ bundle install

Benennen Sie die Datei application.css in application.scss um

$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss

Laden Sie Bootstrap in scss

Schreiben Sie Folgendes in application.scss

application.scss


@import "bootstrap-sprockets";
@import "bootstrap";

Bearbeiten Sie application.js

Der folgende Teil von application.js

application.js


//= require rails-ujs
//= require turbolinks
//= require_tree .

Von

application.js


//= require rails-ujs
//= require jquery
//= require bootstrap-sprockets
//= require_tree .

Umschreiben an.

Bearbeiten Sie index.html.erb

html:index.html.erb


<div class="container">
  <h1>Liste der Artikel</h1>
  <table class="table">
    <% @posts.each do |post| %>
      <tr>
        <td><%= post.title %></td>
        <td>
          <% if post.liked_by?(current_user) %>
            <% like = Like.find_by(user_id: current_user.id, post_id: post.id) %>
            <%= link_to like_path(like), method: :delete do %>
              <span class="glyphicon glyphicon-heart" aria-hidden="true" style="color: red;">
              <span><%= post.likes.count %></span>
            <% end %>
          <% else %>
            <%= link_to post_likes_path(post), method: :post do %>
              <span class="glyphicon glyphicon-heart" aria-hidden="true" style="color: gray;">
              <span><%= post.likes.count %></span>
            <% end %>
          <% end %>
        </td>
      </tr>
    <% end %>
  </table>
</div>

Dies ist abgeschlossen.

Referenzartikel

https://qiita.com/soehina/items/a68ab66da3ea1d260301

Recommended Posts

So implementieren Sie eine ähnliche Funktion in Rails
So implementieren Sie eine nette Funktion in Ajax mit Rails
So implementieren Sie Suchfunktionen in Rails
So fügen Sie ein Video in Rails ein
So implementieren Sie Ranking-Funktionen in Rails
So erstellen Sie einfach ein Pulldown mit Rails
[Rails] So implementieren Sie Scraping
So implementieren Sie eine Diashow mit Slick in Rails (einzeln und mehrfach nacheinander)
So implementieren Sie die Gastanmeldung in 5 Minuten im Rails-Portfolio
[So fügen Sie ein Video mit Rails in haml ein]
So schreiben Sie eine Datumsvergleichssuche in Rails
[Rails 6] So legen Sie ein Hintergrundbild in Rails [CSS] fest
[Rails] So laden Sie JavaScript in einer bestimmten Ansicht
Implementieren Sie eine ähnliche Funktion für Posts
Implementieren Sie ein Kontaktformular in Rails
So installieren Sie jQuery in Rails 6
[Rails] So implementieren Sie die Sternebewertung
So installieren Sie Swiper in Rails
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
So implementieren Sie ein kreisförmiges Profilbild mit CarrierWave und R Magick in Rails
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
So ändern Sie den App-Namen in Rails
Verwendung von MySQL im Rails-Tutorial
So erzwingen Sie Codierungskonventionen in Java
[Rails] So konfigurieren Sie das Routing in Ressourcen
[Rails] So erstellen Sie eine Teilvorlage
Implementieren Sie so etwas wie einen Stack in Java
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen
So implementieren Sie die asynchrone Verarbeitung in Outsystems
So veröffentlichen Sie eine Bibliothek in jCenter
Verwendung von credentials.yml.enc aus Rails 5.2
[Rails] Eine einfache Möglichkeit, eine Selbsteinführungsfunktion in Ihrem Profil zu implementieren
Ich habe versucht, die Ajax-Verarbeitung der ähnlichen Funktion in Rails zu implementieren
So implementieren Sie einen Job, der die Java-API in JobScheduler verwendet
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
Wie schreibe ich Rails
[Rails] So erstellen Sie ein Diagramm mit lazy_high_charts
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]
So zeigen Sie eine Webseite in Java an
Wie man Rails allgemein ins Japanische übersetzt
[Rails] So implementieren Sie einen Unit-Test eines Modells
So führen Sie eine djUnit-Aufgabe in Ant aus
So fügen Sie in Spring Boot einen Klassenpfad hinzu
So erstellen Sie ein Thema in Liferay 7 / DXP
So deinstallieren Sie Rails
So aktualisieren Sie Benutzeränderungen in Rails Devise, ohne ein Kennwort einzugeben
So trennen Sie .scss nach Controller in Rails
So fügen Sie die html.erb-Klasse in Rails bedingt hinzu
[Rails] So erstellen Sie eine Twitter-Freigabeschaltfläche
Verwendung von JQuery in Rails 6 js.erb