renalware-core 2.0.9 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/renalware/accesses/dashboards_controller.rb +2 -14
- data/app/mailers/renalware/letters/delivery/practice_mailer.rb +1 -1
- data/app/models/renalware/letters/delivery/email_letter_to_practice.rb +9 -4
- data/app/models/renalware/letters/recipient.rb +15 -0
- data/app/presenters/renalware/accesses/dashboard_presenter.rb +46 -0
- data/app/presenters/renalware/dashboard/dashboard_presenter.rb +5 -1
- data/app/presenters/renalware/hd/protocol_presenter.rb +6 -0
- data/app/presenters/renalware/letters/recipient_presenter.rb +0 -2
- data/app/values/renalware/address.rb +5 -1
- data/app/views/renalware/accesses/dashboards/show.html.slim +19 -13
- data/app/views/renalware/accesses/plans/_summary.html.slim +2 -5
- data/app/views/renalware/accesses/procedures/_form.html.slim +1 -1
- data/app/views/renalware/accesses/procedures/_list.html.slim +4 -4
- data/app/views/renalware/accesses/procedures/edit.html.slim +1 -1
- data/app/views/renalware/accesses/procedures/new.html.slim +1 -1
- data/app/views/renalware/accesses/profiles/_current_profile.html.slim +8 -8
- data/app/views/renalware/accesses/profiles/_form.html.slim +1 -1
- data/app/views/renalware/accesses/profiles/_list.html.slim +4 -4
- data/app/views/renalware/accesses/profiles/edit.html.slim +1 -1
- data/app/views/renalware/accesses/profiles/new.html.slim +1 -1
- data/app/views/renalware/clinical/dry_weights/_form.html.slim +2 -1
- data/app/views/renalware/hd/protocols/_latest_dry_weight.html.slim +13 -0
- data/app/views/renalware/hd/protocols/show.pdf.slim +3 -1
- data/app/views/renalware/letters/formatted_letters/_letter.html.slim +11 -2
- data/config/initializers/devise.rb +1 -1
- data/lib/renalware/version.rb +1 -1
- metadata +4 -5
- data/app/views/renalware/clinical/dry_weights/_dry_weight_nav.html.slim +0 -4
- data/app/views/renalware/clinical/dry_weights/edit.html.slim +0 -9
- data/app/views/renalware/dashboard/dashboards/_side_nav.html.slim +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aaf95664c515c88272128f354f13acdee13fc37b35108a59c0a8717bedafa60b
|
4
|
+
data.tar.gz: 5a6a3748e17a2b5b47e0c130d3959b1d03eeb47be6f00698e3692ac5581668d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2cf400155b462ecc8884cd3746ab505e240d4e1b4d8593745b194675a802969e38d20e42d0b7de45bd3c24280ac6cacdeae9f857accbc0231a7f7fd8734719d
|
7
|
+
data.tar.gz: b9b2881a5e49a90d69d130b2facaa77b8eed767a64f06ed3e00f71723110be2c928daba4c084574265898d5ff93afa6f5336503c483875a0d2af7d0edb71ea9e
|
@@ -3,21 +3,9 @@ require "collection_presenter"
|
|
3
3
|
module Renalware
|
4
4
|
module Accesses
|
5
5
|
class DashboardsController < Accesses::BaseController
|
6
|
-
before_action :load_patient
|
7
|
-
|
8
|
-
# TODO: Wrap these variables in a DashboardPresenter
|
9
6
|
def show
|
10
|
-
|
11
|
-
|
12
|
-
plans = patient.plans.historical.ordered
|
13
|
-
assessments = patient.assessments.ordered
|
14
|
-
|
15
|
-
@profiles = CollectionPresenter.new(profiles, ProfilePresenter)
|
16
|
-
@plans = CollectionPresenter.new(plans, PlanPresenter)
|
17
|
-
@procedures = CollectionPresenter.new(procedures, ProcedurePresenter)
|
18
|
-
@assessments = CollectionPresenter.new(assessments, AssessmentPresenter)
|
19
|
-
@current_profile = ProfilePresenter.new(patient.current_profile)
|
20
|
-
@current_plan = ProfilePresenter.new(patient.current_plan)
|
7
|
+
authorize patient
|
8
|
+
render locals: { dashboard: DashboardPresenter.new(patient) }
|
21
9
|
end
|
22
10
|
end
|
23
11
|
end
|
@@ -6,7 +6,7 @@ module Renalware
|
|
6
6
|
module Letters
|
7
7
|
module Delivery
|
8
8
|
class PracticeMailer < ApplicationMailer
|
9
|
-
def patient_letter(letter:, to:)
|
9
|
+
def patient_letter(letter:, to:, recipient:)
|
10
10
|
validate_letter(letter)
|
11
11
|
letter_presenter = LetterPresenterFactory.new(letter)
|
12
12
|
attachments["letter.pdf"] = Letters::PdfRenderer.call(letter_presenter)
|
@@ -21,16 +21,21 @@ module Renalware
|
|
21
21
|
# false: the patient does not have a practice or the practice has no email address
|
22
22
|
def call
|
23
23
|
return false unless email_letter_to_practice?
|
24
|
-
|
24
|
+
email_letter_to_the_patients_practice
|
25
25
|
true
|
26
26
|
end
|
27
27
|
|
28
28
|
private
|
29
29
|
|
30
|
-
def
|
30
|
+
def email_letter_to_the_patients_practice
|
31
31
|
Letter.transaction do
|
32
|
-
|
33
|
-
|
32
|
+
PracticeMailer.patient_letter(
|
33
|
+
letter: letter,
|
34
|
+
to: practice_email_address,
|
35
|
+
recipient: nil # TODO
|
36
|
+
).deliver_later
|
37
|
+
|
38
|
+
# Flag as sent
|
34
39
|
gp_recipient.update(emailed_at: Time.zone.now)
|
35
40
|
end
|
36
41
|
end
|
@@ -30,6 +30,11 @@ module Renalware
|
|
30
30
|
build_address if address.blank?
|
31
31
|
|
32
32
|
address.copy_from(current_address)
|
33
|
+
# Its possible a migrated address might not have a postcode. Don't let archiving fail
|
34
|
+
# at this stage because of that as the user cannot be informed at this stage
|
35
|
+
# so skip address validation.
|
36
|
+
address.skip_validation = true
|
37
|
+
|
33
38
|
address.save!
|
34
39
|
end
|
35
40
|
|
@@ -44,6 +49,12 @@ module Renalware
|
|
44
49
|
addressee_id == contact.id
|
45
50
|
end
|
46
51
|
|
52
|
+
def statment_to_indicate_letter_will_be_emailed
|
53
|
+
if primary_care_physician? && practice_email_address.present?
|
54
|
+
"VIA EMAIL to #{practice_email_address}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
47
58
|
private
|
48
59
|
|
49
60
|
def address_for_patient
|
@@ -76,6 +87,10 @@ module Renalware
|
|
76
87
|
patient? || primary_care_physician?
|
77
88
|
end
|
78
89
|
|
90
|
+
def practice_email_address
|
91
|
+
@practice_email_address ||= letter.patient&.practice&.email
|
92
|
+
end
|
93
|
+
|
79
94
|
# Make sure we have a 'name' set in the address record set as this is used in the letter
|
80
95
|
# e.g. Roger Robar <- address.name
|
81
96
|
# 123 Toon Town
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_dependency "renalware/accesses"
|
2
|
+
require "attr_extras"
|
3
|
+
|
4
|
+
module Renalware
|
5
|
+
module Accesses
|
6
|
+
class DashboardPresenter
|
7
|
+
attr_reader_initialize :patient
|
8
|
+
|
9
|
+
def profiles
|
10
|
+
@profiles ||= CollectionPresenter.new(
|
11
|
+
patient.profiles.past_and_future.ordered,
|
12
|
+
ProfilePresenter
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
def plans
|
17
|
+
@plans ||= CollectionPresenter.new(
|
18
|
+
patient.plans.historical.ordered,
|
19
|
+
PlanPresenter
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
def procedures
|
24
|
+
@procedures ||= CollectionPresenter.new(
|
25
|
+
patient.procedures.ordered,
|
26
|
+
ProcedurePresenter
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
def assessments
|
31
|
+
@assessments ||= CollectionPresenter.new(
|
32
|
+
patient.assessments.ordered,
|
33
|
+
AssessmentPresenter
|
34
|
+
)
|
35
|
+
end
|
36
|
+
|
37
|
+
def current_profile
|
38
|
+
@current_profile ||= ProfilePresenter.new(patient.current_profile)
|
39
|
+
end
|
40
|
+
|
41
|
+
def current_plan
|
42
|
+
@current_plan ||= ProfilePresenter.new(patient.current_plan)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -24,8 +24,12 @@ module Renalware
|
|
24
24
|
def letters_in_progress
|
25
25
|
@letters_in_progress ||= begin
|
26
26
|
present_letters(
|
27
|
-
|
27
|
+
Letters::Letter
|
28
|
+
.where("author_id = ? or created_by_id = ?", user.id, user.id)
|
29
|
+
.in_progress
|
30
|
+
.reverse
|
28
31
|
)
|
32
|
+
# Renalware::Letters.cast_author(user)
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
@@ -16,6 +16,12 @@ module Renalware
|
|
16
16
|
super(view_context)
|
17
17
|
end
|
18
18
|
|
19
|
+
def latest_dry_weight
|
20
|
+
@latest_dry_weight ||= begin
|
21
|
+
Clinical::DryWeight.for_patient(patient).order(assessed_on: :desc).first
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
19
25
|
# TODO: some emerging duplication with HD::DashboardPresenter and forthcoming MDMPresenter?
|
20
26
|
# Could have a base HD presenter or mixin required elements e.g. from concerns
|
21
27
|
def preference_set
|
@@ -23,8 +23,6 @@ module Renalware
|
|
23
23
|
__getobj__.address
|
24
24
|
end
|
25
25
|
|
26
|
-
# @section sub-classes
|
27
|
-
|
28
26
|
# The address for a recipient such as a primary care physician or a patient are
|
29
27
|
# denormalized and stored with the recipient when the letter is archived.
|
30
28
|
# Before the letter is archived, we display the current address directly
|
@@ -3,10 +3,14 @@ module Renalware
|
|
3
3
|
belongs_to :country, class_name: "System::Country"
|
4
4
|
validates :email, email: true, allow_blank: true
|
5
5
|
delegate :uk?, to: :country, allow_nil: true
|
6
|
-
validates_with AddressValidator
|
7
6
|
|
8
7
|
belongs_to :addressable, polymorphic: true
|
9
8
|
|
9
|
+
# Set to true to avoid address validation - useful when archiving a letter with a migrated
|
10
|
+
# address that might not have a postcode for instance
|
11
|
+
attr_accessor :skip_validation
|
12
|
+
validates_with AddressValidator, unless: :skip_validation
|
13
|
+
|
10
14
|
def self.reject_if_blank
|
11
15
|
lambda { |attrs|
|
12
16
|
%w(name organisation_name street_1 street_2 street_3 town county postcode)
|
@@ -1,19 +1,25 @@
|
|
1
1
|
= content_for(:actions) do
|
2
|
-
= render "page_actions", patient:
|
2
|
+
= render "page_actions", patient: dashboard.patient
|
3
3
|
|
4
4
|
= within_patient_layout do
|
5
5
|
.document
|
6
|
-
- if
|
7
|
-
= render "renalware/accesses/profiles/current_profile"
|
8
|
-
|
9
|
-
|
6
|
+
- if dashboard.current_profile.present?
|
7
|
+
= render "renalware/accesses/profiles/current_profile",
|
8
|
+
current_profile: dashboard.current_profile,
|
9
|
+
patient: dashboard.patient
|
10
|
+
- if dashboard.profiles.any?
|
11
|
+
= render "renalware/accesses/profiles/list",
|
12
|
+
patient: dashboard.patient,
|
13
|
+
profiles: dashboard.profiles
|
10
14
|
= render "renalware/accesses/plans/summary",
|
11
|
-
patient:
|
12
|
-
plans:
|
13
|
-
current_plan:
|
14
|
-
- if
|
15
|
-
= render "renalware/accesses/procedures/list"
|
16
|
-
|
15
|
+
patient: dashboard.patient,
|
16
|
+
plans: dashboard.plans,
|
17
|
+
current_plan: dashboard.current_plan
|
18
|
+
- if dashboard.procedures.any?
|
19
|
+
= render "renalware/accesses/procedures/list",
|
20
|
+
patient: dashboard.patient,
|
21
|
+
procedures: dashboard.procedures
|
22
|
+
- if dashboard.assessments.any?
|
17
23
|
= render "renalware/accesses/assessments/list",
|
18
|
-
patient:
|
19
|
-
assessments:
|
24
|
+
patient: dashboard.patient,
|
25
|
+
assessments: dashboard.assessments
|
@@ -4,14 +4,11 @@ article.access-plans
|
|
4
4
|
header
|
5
5
|
h2 Current Access Plan
|
6
6
|
ul
|
7
|
-
/ li= link_to "Create",
|
8
|
-
new_patient_accesses_plan_path(@patient),
|
9
|
-
class: "button"
|
10
7
|
li= link_to "Edit",
|
11
|
-
edit_patient_accesses_plan_path(
|
8
|
+
edit_patient_accesses_plan_path(patient, current_plan),
|
12
9
|
class: "button"
|
13
10
|
li= link_to "View",
|
14
|
-
patient_accesses_plan_path(
|
11
|
+
patient_accesses_plan_path(patient, current_plan),
|
15
12
|
class: "button secondary"
|
16
13
|
.current-access-plan
|
17
14
|
= render "renalware/accesses/plans/details", plan: current_plan
|
@@ -2,7 +2,7 @@ article.access-procedures
|
|
2
2
|
header
|
3
3
|
h2 Procedure History
|
4
4
|
= link_to "Add Procedure",
|
5
|
-
new_patient_accesses_procedure_path(
|
5
|
+
new_patient_accesses_procedure_path(patient),
|
6
6
|
class: "button"
|
7
7
|
|
8
8
|
table.auto-layout
|
@@ -17,12 +17,12 @@ article.access-procedures
|
|
17
17
|
th Outcome
|
18
18
|
|
19
19
|
tbody
|
20
|
-
-
|
20
|
+
- procedures.each do |procedure|
|
21
21
|
tr
|
22
22
|
td
|
23
|
-
= link_to "View", patient_accesses_procedure_path(
|
23
|
+
= link_to "View", patient_accesses_procedure_path(patient, procedure)
|
24
24
|
= pipe_separator
|
25
|
-
= link_to "Edit", edit_patient_accesses_procedure_path(
|
25
|
+
= link_to "Edit", edit_patient_accesses_procedure_path(patient, procedure)
|
26
26
|
td= procedure.performed_on
|
27
27
|
td= procedure.type&.long_name
|
28
28
|
td= procedure.side
|
@@ -1,24 +1,24 @@
|
|
1
|
-
- return if
|
1
|
+
- return if current_profile.blank?
|
2
2
|
|
3
3
|
article
|
4
4
|
header
|
5
5
|
h2 Current Access Profile
|
6
6
|
ul
|
7
7
|
li= link_to "Edit",
|
8
|
-
edit_patient_accesses_profile_path(
|
8
|
+
edit_patient_accesses_profile_path(patient, current_profile),
|
9
9
|
class: "button"
|
10
10
|
li= link_to "View",
|
11
|
-
patient_accesses_profile_path(
|
11
|
+
patient_accesses_profile_path(patient, current_profile),
|
12
12
|
class: "button secondary"
|
13
13
|
|
14
14
|
dl.dl-horizontal
|
15
15
|
dt Formed On:
|
16
|
-
dd=
|
16
|
+
dd= current_profile.formed_on
|
17
17
|
dt Type:
|
18
|
-
dd=
|
18
|
+
dd= current_profile.type
|
19
19
|
dt Side:
|
20
|
-
dd=
|
20
|
+
dd= current_profile.side
|
21
21
|
dt Start Date:
|
22
|
-
dd=
|
22
|
+
dd= current_profile.started_on
|
23
23
|
dt Notes:
|
24
|
-
dd= simple_format
|
24
|
+
dd= simple_format current_profile.notes
|
@@ -2,7 +2,7 @@ article.access-profiles
|
|
2
2
|
header
|
3
3
|
h2 Access Profile History
|
4
4
|
= link_to "Add Profile",
|
5
|
-
new_patient_accesses_profile_path(
|
5
|
+
new_patient_accesses_profile_path(patient),
|
6
6
|
class: "button"
|
7
7
|
|
8
8
|
table.auto-layout
|
@@ -15,12 +15,12 @@ article.access-profiles
|
|
15
15
|
th.col-width-small Side
|
16
16
|
|
17
17
|
tbody
|
18
|
-
-
|
18
|
+
- profiles.each do |profile|
|
19
19
|
tr
|
20
20
|
td
|
21
|
-
= link_to "View", patient_accesses_profile_path(
|
21
|
+
= link_to "View", patient_accesses_profile_path(patient, profile)
|
22
22
|
= pipe_separator
|
23
|
-
= link_to "Edit", edit_patient_accesses_profile_path(
|
23
|
+
= link_to "Edit", edit_patient_accesses_profile_path(patient, profile)
|
24
24
|
td= profile.formed_on
|
25
25
|
td= profile.started_on
|
26
26
|
td= profile.terminated_on
|
@@ -23,7 +23,9 @@
|
|
23
23
|
td= render "profile", profile: protocol.profile
|
24
24
|
td= render "allergies", patient: protocol.patient
|
25
25
|
td= render "prescriptions", prescriptions: protocol.prescriptions
|
26
|
-
td
|
26
|
+
td
|
27
|
+
= render "recent_pathology", recent_pathology: protocol.recent_pathology
|
28
|
+
= render "latest_dry_weight", latest_dry_weight: protocol.latest_dry_weight
|
27
29
|
|
28
30
|
.row.collapse
|
29
31
|
.small-12.columns
|
@@ -285,7 +285,12 @@ scss:
|
|
285
285
|
p Private and confidential
|
286
286
|
|
287
287
|
.address
|
288
|
-
p
|
288
|
+
p
|
289
|
+
= letter.main_recipient.to_html
|
290
|
+
- email_statement = letter.main_recipient.statment_to_indicate_letter_will_be_emailed
|
291
|
+
- if email_statement.present?
|
292
|
+
br
|
293
|
+
= email_statement
|
289
294
|
|
290
295
|
.unit-block
|
291
296
|
span.nhs-logo
|
@@ -334,4 +339,8 @@ scss:
|
|
334
339
|
|
335
340
|
- letter.cc_recipients.each do |cc|
|
336
341
|
.address.nobreak
|
337
|
-
p
|
342
|
+
p
|
343
|
+
= cc.to_html
|
344
|
+
- if cc.statment_to_indicate_letter_will_be_emailed.present?
|
345
|
+
br
|
346
|
+
= cc.statment_to_indicate_letter_will_be_emailed
|
@@ -154,7 +154,7 @@ Devise.setup do |config|
|
|
154
154
|
# ==> Configuration for :timeoutable
|
155
155
|
# The time you want to timeout the user session without activity. After this
|
156
156
|
# time the user will be asked for credentials again. Default is 30 minutes.
|
157
|
-
config.timeout_in = Rails.application.secrets.fetch(:session_timeout,
|
157
|
+
config.timeout_in = Rails.application.secrets.fetch(:session_timeout, 30).minutes
|
158
158
|
|
159
159
|
# If true, expires auth token on session timeout.
|
160
160
|
# config.expire_auth_token_on_timeout = false
|
data/lib/renalware/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: renalware-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airslie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -1800,6 +1800,7 @@ files:
|
|
1800
1800
|
- app/presenters/false_class_presenter.rb
|
1801
1801
|
- app/presenters/presenter.rb
|
1802
1802
|
- app/presenters/renalware/accesses/assessment_presenter.rb
|
1803
|
+
- app/presenters/renalware/accesses/dashboard_presenter.rb
|
1803
1804
|
- app/presenters/renalware/accesses/patient_presenter.rb
|
1804
1805
|
- app/presenters/renalware/accesses/plan_presenter.rb
|
1805
1806
|
- app/presenters/renalware/accesses/procedure_presenter.rb
|
@@ -2022,10 +2023,8 @@ files:
|
|
2022
2023
|
- app/views/renalware/clinical/body_compositions/new.html.slim
|
2023
2024
|
- app/views/renalware/clinical/body_compositions/show.html.slim
|
2024
2025
|
- app/views/renalware/clinical/dry_weights/_dry_weight.html.slim
|
2025
|
-
- app/views/renalware/clinical/dry_weights/_dry_weight_nav.html.slim
|
2026
2026
|
- app/views/renalware/clinical/dry_weights/_form.html.slim
|
2027
2027
|
- app/views/renalware/clinical/dry_weights/_list.html.slim
|
2028
|
-
- app/views/renalware/clinical/dry_weights/edit.html.slim
|
2029
2028
|
- app/views/renalware/clinical/dry_weights/index.html.slim
|
2030
2029
|
- app/views/renalware/clinical/dry_weights/new.html.slim
|
2031
2030
|
- app/views/renalware/clinical/profiles/edit.html.slim
|
@@ -2046,7 +2045,6 @@ files:
|
|
2046
2045
|
- app/views/renalware/dashboard/bookmarks/_table.html.slim
|
2047
2046
|
- app/views/renalware/dashboard/dashboards/_content.html.slim
|
2048
2047
|
- app/views/renalware/dashboard/dashboards/_layout.html.slim
|
2049
|
-
- app/views/renalware/dashboard/dashboards/_side_nav.html.slim
|
2050
2048
|
- app/views/renalware/dashboard/dashboards/show.html.slim
|
2051
2049
|
- app/views/renalware/dashboard/letters/_letter.html.slim
|
2052
2050
|
- app/views/renalware/dashboard/letters/_table.html.slim
|
@@ -2161,6 +2159,7 @@ files:
|
|
2161
2159
|
- app/views/renalware/hd/preference_sets/_summary.html.slim
|
2162
2160
|
- app/views/renalware/hd/preference_sets/edit.html.slim
|
2163
2161
|
- app/views/renalware/hd/protocols/_allergies.html.slim
|
2162
|
+
- app/views/renalware/hd/protocols/_latest_dry_weight.html.slim
|
2164
2163
|
- app/views/renalware/hd/protocols/_prescriptions.html.slim
|
2165
2164
|
- app/views/renalware/hd/protocols/_profile.html.slim
|
2166
2165
|
- app/views/renalware/hd/protocols/_recent_pathology.html.slim
|
@@ -1,9 +0,0 @@
|
|
1
|
-
= within_patient_layout(title: "Dry Weight") do
|
2
|
-
= render "dry_weight_nav"
|
3
|
-
|
4
|
-
.document
|
5
|
-
= simple_form_for @dry_weight,
|
6
|
-
url: patient_hd_dry_weight_path(@patient, @dry_weight),
|
7
|
-
html: { autocomplete: "off" },
|
8
|
-
wrapper: "horizontal_form" do |f|
|
9
|
-
= render "form", f: f
|