aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-09-26 11:42:47 +0200
committerXinhui2017-09-26 11:42:47 +0200
commit4944a2c820356eb038aa5131eb825493008fb984 (patch)
treeda13300703f1be36cff835a158633b276d3624f5
parent3a1db2a4df900d8ea5aed74bdb8dd4086c3fa551 (diff)
downloadchouette-core-4944a2c820356eb038aa5131eb825493008fb984.tar.bz2
Nested form for compliance control block
Refs #4585
-rw-r--r--app/controllers/compliance_controls_controller.rb8
-rw-r--r--app/models/compliance_control.rb10
-rw-r--r--app/models/compliance_control_block.rb2
-rw-r--r--app/views/compliance_controls/_form.html.slim3
-rw-r--r--app/views/compliance_controls/edit.html.slim9
-rw-r--r--app/views/compliance_controls/show.html.slim2
6 files changed, 31 insertions, 3 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb
index bfa7cbefa..0f4ca3481 100644
--- a/app/controllers/compliance_controls_controller.rb
+++ b/app/controllers/compliance_controls_controller.rb
@@ -3,6 +3,12 @@ class ComplianceControlsController < BreadcrumbController
defaults resource_class: ComplianceControl
belongs_to :compliance_control_set
+ def new
+ @compliance_control_set = parent
+ @compliance_control = ComplianceControl.new
+ @compliance_control.build_compliance_control_block
+ end
+
def create
create!(notice: t('notice.compliance_control.created'))
end
@@ -18,6 +24,6 @@ class ComplianceControlsController < BreadcrumbController
private
def compliance_control_params
- params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name])
+ params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name, :transport_mode])
end
end
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 73b6be8e5..763a42029 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -1,7 +1,6 @@
class ComplianceControl < ActiveRecord::Base
extend Enumerize
belongs_to :compliance_control_set
-
has_one :compliance_control_block, dependent: :destroy
accepts_nested_attributes_for :compliance_control_block
@@ -15,6 +14,15 @@ class ComplianceControl < ActiveRecord::Base
def self.policy_class
ComplianceControlPolicy
end
+
+ def self.inherited(child)
+ child.instance_eval do
+ def model_name
+ ComplianceControl.model_name
+ end
+ end
+ super
+ end
end
# Ensure STI subclasses are loaded
diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb
index 7fda998eb..12b10ab2a 100644
--- a/app/models/compliance_control_block.rb
+++ b/app/models/compliance_control_block.rb
@@ -4,6 +4,8 @@ class ComplianceControlBlock < ActiveRecord::Base
before_save :set_compliance_control_set
+ hstore_accessor :condition_attributes, transport_mode: :string
+
def set_compliance_control_set
self.compliance_control_set = self.compliance_control.compliance_control_set
end
diff --git a/app/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim
index cc0310620..9ee2dec69 100644
--- a/app/views/compliance_controls/_form.html.slim
+++ b/app/views/compliance_controls/_form.html.slim
@@ -7,8 +7,9 @@
= f.input :criticity
= f.input :comment
- = f.fields_for :compliance_control_block, ComplianceControlBlock.new do |c|
+ = f.simple_fields_for :compliance_control_block do |c|
= c.input :name
+ = c.input :transport_mode, as: :select, collection:StifTransportModeEnumerations.transport_mode.options
end
.separator
diff --git a/app/views/compliance_controls/edit.html.slim b/app/views/compliance_controls/edit.html.slim
index e69de29bb..6824c7e40 100644
--- a/app/views/compliance_controls/edit.html.slim
+++ b/app/views/compliance_controls/edit.html.slim
@@ -0,0 +1,9 @@
+= pageheader 'compliance-control',
+ t('compliance_control.index.edit')
+
+
+.page_content
+ .container-fluid
+ .row
+ .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1
+ = render 'form'
diff --git a/app/views/compliance_controls/show.html.slim b/app/views/compliance_controls/show.html.slim
index 9e197695d..a665f1ab1 100644
--- a/app/views/compliance_controls/show.html.slim
+++ b/app/views/compliance_controls/show.html.slim
@@ -1 +1,3 @@
= @compliance_control.inspect
+br
+= @compliance_control.compliance_control_block.inspect