Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions app/components/error_explanation.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# frozen_string_literal: true

module Components
class ErrorExplanation < Components::Base
attr_accessor :errors

def initialize(errors:)
super()
self.errors = errors
end

def view_template
return if errors.none?

div(class: "error-explanation") do
h2 { "Something went wrong" }
ul do
errors.full_messages.each { |message| li { message } }
end
end
end
end
end
41 changes: 41 additions & 0 deletions app/views/accounts/new.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# frozen_string_literal: true

module Views
module Accounts
class New < Views::Base
attr_accessor :user

def initialize(user:)
super()
self.user = user
end

def view_template
h1 { "New Account" }

form_with(model: user, url: account_path) do |form|
render(Components::ErrorExplanation.new(errors: user.errors))

div(class: "field") do
form.label(:email)
form.email_field(:email, required: true)
end

div(class: "field") do
form.label(:password)
form.password_field(:password, required: true)
end

div(class: "field") do
form.label(:password_confirmation)
form.password_field(:password_confirmation, required: true)
end

div(class: "actions") do
form.submit("Create Account")
end
end
end
end
end
end
33 changes: 33 additions & 0 deletions app/views/accounts/show.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# frozen_string_literal: true

module Views
module Accounts
class Show < Views::Base
attr_accessor :user

def initialize(user:)
super()
self.user = user
end

def view_template
h1 { "My Account" }

form_with(model: user, url: account_path) do |form|
render(Components::ErrorExplanation.new(errors: user.errors))

div(class: "field") do
form.label(:email)
form.email_field(:email, required: true)
end

div(class: "actions") do
form.submit("Update Account")
end
end

button_to("Delete Account", account_path, method: :delete)
end
end
end
end
Loading