[RUBY] [Schienen] So registrieren Sie mehrere Datensätze in der Zwischentabelle mit einer Zuordnung von vielen zu vielen

Funktionen, die Sie implementieren möchten

In einer Viele-zu-Viele-Modellbeziehung möchte ich mehrere ausgewählte Werte in der Zwischentabelle mit dem Kontrollkästchen registrieren. Ich war wirklich begeistert, als ich es implementiert habe, also werde ich es als Memorandum belassen.

Umgebung

Rails 5.2 Ruby 2.5.1 MacOSX

Modellbeziehung

class Project < ApplicationRecord
  has_many :project_phases, dependent: :destroy
  has_many :mst_phases, through: :project_phases
end
class ProjectPhase < ApplicationRecord
  belongs_to :project
  belongs_to :mst_phase
end

class MstPhase < ApplicationRecord
  has_many :project_phases
end

In Bezug auf den Prozess wird in der Mastertabelle nur das Modell "project_phase" zugeordnet, sodass nicht auf die Seite des Projektmodells verwiesen wird.

View

<%= form_with model: @project, local: true do |f| %>
  <label>Projektname</label>
  <%= f.text_field :project_name %>

  <label>Projektprozess</label>
  <%= f.collection_check_boxes :mst_phase_ids, MstPhase.all, :id, :phase %>
<% end %>

Controller

class ProjectsController < ApplicationController

  def new
    @project = Project.new
    @project.project_phases.build
  end

  def create
    @project = Project.new(projects_params)
    
    if @project.save
      redirect_to project_path @project
    else
      render action: 'new'
    end
  end

  private
  def projects_params
    params.require(:project).permit( :project_name, mst_phase_ids: [])
  end
end

Der Punkt ist, "StrongParameter" so einzustellen, dass Modelle, die sich auf "has_many" beziehen, als Array empfangen werden.

Die Namen der Parameter sollten wie folgt beschrieben werden.

Modellname_ids

Da für die im Array empfangenen Parameter keine spezielle Logik implementiert werden muss, werden die Datensätze in der Tabelle für die Anzahl der Elemente im Array registriert. Schienen bequem. .. .. .. ..

Recommended Posts

[Schienen] So registrieren Sie mehrere Datensätze in der Zwischentabelle mit einer Zuordnung von vielen zu vielen
So erstellen Sie eine eindeutige Datenkombination in der Schienen-Zwischentabelle
[Rails] So erhalten Sie die aktuell mit devise angemeldeten Benutzerinformationen
[Rails] So wenden Sie das in der Hauptanwendung verwendete CSS mit Administrate an
So überprüfen Sie Rails-Befehle im Terminal
[Rails] So bedienen Sie die in der Hauptanwendung verwendete Hilfsmethode mit Administrate
So ändern Sie die Aktion mit mehreren Senden-Schaltflächen
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
[Rails] So ändern Sie den Spaltennamen der Tabelle
Organisierte schrittweise Interaktion mit dem JDK
[So fügen Sie ein Video mit Rails in haml ein]
Abfragen von Arrays in jsonb mit Rails + postgres
[Schienen] So zeigen Sie Bilder in der Ansicht an
[Mit Backtricks] So stellen Sie React to the simple Rails vor
[Schienen] Anzeigen von Informationen, die in der Datenbank gespeichert sind
Verwendung derselben Mapper-Klasse in mehreren Datenquellen mit Spring Boot + MyBatis
So installieren Sie jQuery in Rails 6
So installieren Sie Swiper in Rails
[Rails / Routing] So verweisen Sie auf den Controller in Ihrem eigenen Verzeichnis
[Rails] Wie man Kaminari mit Slim einführt und das Design ändert
So erhalten Sie den Wert von Boolean mit jQuery in einfacher Rails-Form
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
So rufen Sie mehrere Namen gleichzeitig in derselben Kategorie auf
So implementieren Sie Suchfunktionen in Rails
So ändern Sie den App-Namen in Rails
So dekorieren Sie CSS auf Rails6 form_with (Hilfs-) Optionsfeldern
[Ruby on Rails] So melden Sie sich nur mit Ihrem Namen und Passwort mit dem Gem-Gerät an
So implementieren Sie eine Diashow mit Slick in Rails (einzeln und mehrfach nacheinander)
[Schienen] Verwendung der Kartenmethode
[JPA] Speichern, wenn Sie andere Elemente als Schlüssel in der Schnittpunkttabelle haben, die sich auf ManyToMany beziehen
Verwendung von MySQL im Rails-Tutorial
[Rails 6] Registrieren und Anmelden mit Devise + SNS-Authentifizierung (mehrere Links zulässig)
[Rails] So konfigurieren Sie das Routing in Ressourcen
So erhalten Sie das Datum mit Java
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
So implementieren Sie Ranking-Funktionen in Rails
[Schienen] So erstellen Sie eine Tabelle, fügen eine Spalte hinzu und ändern den Spaltentyp
So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole
Verwendung von credentials.yml.enc aus Rails 5.2
So erstellen Sie eine Rails 6-Umgebung mit Docker
[Rails] Lesen der vom Bildschirm hochgeladenen XML-Datei im Hash-Typ
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
[Rails6] So verbinden Sie die von Scaffold generierte Buchungsfunktion mit der von devise generierten Benutzerfunktion
So beheben Sie Fehler, die beim Integrationstest "Ruby on Rails" auftreten
So speichern Sie gleichzeitig Daten in einem Modell, das einem verschachtelten Formular zugeordnet ist (Rails 6.0.0)
[Rails] So bestimmen Sie das Ziel anhand von "Rails-Routen"
So überprüfen Sie das Protokoll im Docker-Container
Zuordnung zu mehreren Variablen mit dem ternären Operator