Ich mache eine originelle App mit Rails. Ich habe Active Hash auf diese App angewendet. Aktiviert, um den Datensatz in ActiveHash im Pulldown-Format auszuwählen. Ich werde es aufschreiben, damit ich mich daran erinnern kann, auch wenn ich es vergesse.
Entwicklungsumgebung ruby 2.6.5 Rails 6.0.3.4
Active Hash ist einer der Edelsteine. Zur Gem-Datei hinzufügen und im Terminal installieren.
Gemfile
gem 'active_hash'
Terminal
bundle install
Hier ist der Tag das Ziel von Active Hash. Beim Erstellen eines Modells - Wenn eine Sprungmigration hinzugefügt wird, wird die Migrationsdatei nicht erstellt. Wenn andere ActiveHash-Ziele vorhanden sind, erstellen Sie so viele Modelle wie möglich.
Terminal
rails g model day --skip-migration
Erben Sie ActiveHash im Modell. self.data ist ein Array, in dem Daten im Hash-Format gespeichert werden. Die ID und der Name (Tage) sind im Hash verknüpft.
app/models/day.rb
class day < ActiveHash::Base #← ActiveHash erben
self.data = [
{ id: 1, name: '--' },
{ id: 2, name: '1 Tag' },
{ id: 3, name: '1 Woche' },
]
end
Legen Sie als Nächstes fest, dass die ID der oben festgelegten Anzahl von Tagen in der Datenbank gespeichert wird. Nehmen Sie den Artikel als Beispiel für eine Tabelle, die ActiveHash zugeordnet ist.
2020***********_create_articles.rb
class CreateArticles < ActiveRecord::Migration[6.0]
def change
create_table :articles do |t|
t.string :title , null: false
t.text :text , null: false
t.integer :day_id , null: false #Spalte, in der die ActiveHash-ID gespeichert ist
t.timestamps
end
end
end
Vergessen Sie nicht zu migrieren. Modellassoziationen auch.
app/model/article
validates :day_id # _ID hinzufügen
belongs_to_active_hash :day # _ID nicht erforderlich
Fügen Sie dem starken Parameter day_id hinzu, damit er gespeichert werden kann.
ruby:article.controller.rb
Beispiel:
def new
@article = Article.new
end
def create
@article = Article.new(article_params)
end
private
def article_params
params.require(:article).permit(:title, :text, :day_id)
end
Es kann im Pulldown-Format von collection_select angezeigt werden. Die Argumente sind vom ersten bis zum fünften.
Streit | Wert |
---|---|
Erstes Argument(Zu speichernde Spalte) | day_id |
Zweites Argument(Array von Objekten) | Day.all |
Drittes Argument(In Spalten gespeicherte Elemente) | id |
Viertes Argument(Spaltenname wird in den Optionen angezeigt) | name |
Fünftes Argument(Möglichkeit) | {} |
HTML-Option | {class:"day-select"} |
<%= f.collection_select(:day_id, Day.all, :id, :name, {}, {class:"day-select"}) %>
das ist alles
Recommended Posts