Nachfolgend finden Sie die Standardaktionen von Rails
Wenn Sie eine andere Verarbeitung als die oben genannten grundlegenden Aktionen ausführen möchten, können Sie diese selbst definieren.
Sie können ** Sammlung ** und ** Mitglied ** verwenden, um das Routing zu diesem Zeitpunkt zu definieren.
Rails.application.routes.draw do
resources :hoges do
collection do
HTTP-Methode'Ursprünglicher Methodenname'
end
end
end
Rails.application.routes.draw do
resources :hoges do
member do
HTTP-Methode'Ursprünglicher Methodenname'
end
end
end
Der Unterschied besteht darin, ob das generierte Routing ** id ** hat oder nicht.
・ Sammlung →: Keine ID ・ Mitglied →: mit ID
Wenn Sie zu einer bestimmten Seite wechseln müssen, verwenden Sie ein Mitglied.
Und das Wichtigste ist, wo der Inhalt der Methode geschrieben werden soll.
Im Allgemeinen scheint es sogar am Entwicklungsstandort üblich zu sein, die Methode zu beschreiben, die sich auf die Interaktion mit der Tabelle (DB) im Modell bezieht.
Wenn Sie beispielsweise eine Suchfunktion implementieren möchten, schreiben Sie eine entsprechende Methode in das Modell und rufen Sie sie mit dem Controller auf (die Beschreibung des Suchformulars für Ansichten usw. wird weggelassen).
routes.rb
resources :tweets do
collection do
get 'search'
end
end
tweet.rb
class Tweet < ApplicationRecord
#Kürzung
def self.search(search)
return Tweet.all unless search
Tweet.where('text LIKE(?)', "%#{search}%")
end
end
tweets_controller.rb
class TweetsController < ApplicationController
#Kürzung
def search
@tweets = Tweet.search(params[:keyword])
end
end
Um jeden zu erklären,
Richten Sie zunächst das Routing für die Suchaktion ein. Ich muss nicht zur Detailseite gehen, um die Suchergebnisse anzuzeigen, daher verwende ich die Sammlung.
Wenn der Benutzer das Formular durchsucht, ruft der Controller die im Modell beschriebene Suchmethode aus der Suchaktion auf. Zu diesem Zeitpunkt wird das Suchergebnis als Argument übergeben (params [: keyword])
Das Suchergebnis wird der Variablensuche in der Suchmethode des Modells zugeordnet und kann in der Methode verwendet werden.
Wenn der Inhalt der Suche leer ist, werden alle Beiträge erfasst, und wenn ein Wert vorhanden ist, werden Beiträge erfasst, die dem bedingten Ausdruck im Inhalt der where-Methode entsprechen.
Recommended Posts