Nachdem ich etwas über die Existenz von Gem und Trailblazer erfahren hatte, die eine abstrakte Ebene bilden, versuchte ich es mit Create. Der Umriss von Trailblazer wird in anderen Artikeln auf leicht verständliche Weise erklärt, daher werde ich ihn weglassen.
Dieser Artikel war sehr leicht zu verstehen. TrailBlazer-Übersicht, die ich zusammenfassen wollte
ruby '2.7.2' 'rails', '~> 6.0.3' template engine: haml
Create
.
└── todo
├── cell
│ ├── index.rb
│ └── new.rb
├── contract
│ └── form.rb
├── operation
│ ├── create.rb
│ └── index.rb
└── view
├── form.haml
├── index.haml
└── new.haml
Operation
module Todo::Operation
class Create < Trailblazer::Operation
class Present < Trailblazer::Operation
step Model(Todo, :new)
step Contract::Build( constant: Todo::Contract::Form )
end
step Subprocess(Present) #gegenwärtiger Klassenschrittaufruf
step Contract::Validate(key: :todo) #Validierung mit Vertrag
step Contract::Persist() #Im Modell speichern
end
end
Contract
module Todo::Contract
class Form < Reform::Form
include Reform::Form::ActiveModel
property :title
property :description
property :completed
validates :title, presence: true
validates :description, length: { minimum: 2 }
#Sie können auch überschreiben
# def title
# super.capitalize
# end
end
end
Cell
module Todo::Cell
class New < Trailblazer::Cell
include ActionView::RecordIdentifier
include ActionView::Helpers::FormOptionsHelper
include SimpleForm::ActionViewExtensions::FormHelper
end
end
View
= simple_form_for(model, html: {novalidate: true}) do |f|
= f.input :title, placeholder: "Title"
%br
= f.input :description, as: :text, placeholder: "Description"
%br
= f.submit 'Submit'
= link_to 'Back', todos_path
[Projekt] Ich habe es diesmal versucht (https://github.com/izumiiii/trail-todo)
TrailBlazer-Übersicht zusammengefasst trailblazer
Recommended Posts