[RUBY] Die Fallstricke von Active Hash

Überblick

Dieses Mal war ich süchtig nach der Gefahr, als ich die in Active Hash gespeicherten Daten zur Produktbearbeitung aufrief, also werde ich sie weitergeben.

Ich habe verschiedene Suchanfragen in Qiita versucht, aber ich konnte es nicht lösen und wurde überflutet ...

Implementierungsdetails

Implementieren Sie die zu bearbeitende Funktion mit der Bearbeitungsaktion für das aufgelistete Element, indem Sie alle Daten einmal registrieren.

Der Punkt ist, dass beim Wechseln zum Bearbeitungsbildschirm die ursprünglich registrierten Daten registriert werden, ohne zurückgesetzt zu werden.

Es ist kein Problem, wenn die Aufrufbeschreibung der Ansichtsdatei und die Zuordnung des Modells erfolgreich verknüpft sind, aber ich habe einen festen Fehler gemacht.

Lösungen

Lassen Sie mich zuerst mit der Lösung beginnen.

Bei der Implementierung einer solchen Funktion lautet der Spaltenname der Daten in Active Hash xxx_id Sagen wir.

Beispielsweise sind Kategorien und Präfekturen für Lieferquellen feste Daten. Beschreiben Sie sie daher in Active Hash. Wenn Sie die Elementspalte verknüpfen, legen Sie sie hier fest als Kategorie-ID oder Präfektur-ID fest.

Im Gegenteil, wenn Sie eine Assoziation mit einem Modell bilden, Es sieht so aus, als gehört zu_active_hash: category, und Sie müssen _id nicht schreiben.

Der Code ist unten zusammengefasst, also hoffe ich, dass Sie ihn dort verstehen.

Code

models/item.rb


---Kürzung---
extend ActiveHash::Associations::ActiveRecordExtensions
  belongs_to_active_hash :category
  belongs_to_active_hash :condition
  belongs_to_active_hash :postage_type
  belongs_to_active_hash :prefecture
  belongs_to_active_hash :preparation_days
---Kürzung---

ruby:views/edit.html.erb


<div class="items-detail">
      <div class="weight-bold-text">Produktdetails</div>
      <div class="form">
        <div class="weight-bold-text">
Kategorie
          <span class="indispensable">Verpflichtend</span>
        </div>
        <%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:"select-box", id:"item-category"}) %>
        <div class="weight-bold-text">
Produktzustand
          <span class="indispensable">Verpflichtend</span>
        </div>
        <%= f.collection_select(:condition_id, Condition.all, :id, :name, {}, {class:"select-box", id:"item-sales-status"}) %>
      </div>
    </div>

Die Migrationsdatei lautet wie folgt. Bitte beachten Sie, dass der Spaltenname _id hat.

○○_create_items.rb



class CreateItems < ActiveRecord::Migration[6.0]
  def change
    create_table :products do |t|
      t.string :name, null: false
      t.text :explanation, null: false
      t.integer :category_id, null: false
      t.integer :condition_id, null:false
      t.integer :postage_type_id, null:false
      t.integer :prefecture_id, null:false
      t.integer :preparation_days_id, null:false
      t.integer :value, null:false
      t.references :user, foreign_key: true
      t.timestamps
    end
  end
end

Schließlich

Ich wurde überflutet, ohne zu bemerken, dass der Spaltenname _id haben musste. Sie können diese Theorie verstehen, indem Sie mit der Konsole spielen, aber ich hoffe, sie hilft demselben Anfänger, der immer noch nicht gut in der Fehlerbehebung ist und in Schwierigkeiten steckt.

Recommended Posts

Die Fallstricke von Active Hash
Verwendung von Active Hash
[Frühling] Fallstricke von BeanUtils.copyProperties
[Rails] Über aktiven Hash
[Rails] Einführung von Active Hash
Fallstricke von NextInt () → nextLine ()
Subtile Fallstricke von Lombok
Tabellenentwurf (mit Active Hash)
gem active_hash Über aktiven Hash
Die Fallstricke von JAX-RS WebTarget.queryParam ()
Über das Verhalten von Ruby Hash # ==
Hash
Extraktion von "Ruby" Double Hash * Review
[Java] Referenz / Update von Active Directory
Ich habe versucht, Active Hash zu erklären