dynamic_scaffold 0.2.0 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4df99a86cf96d23a10ad4baf8d9a0ddcf7b77151f6a7ffd267a893db393731da
4
- data.tar.gz: 505ba47d9f0fb48248e41836a5920015aaaf62c8fc2190df5db384d1ea1c61dd
3
+ metadata.gz: 3a34161c9b0f492dc373a6d627c7d9fe92e7d5e029f7d38b6a297a4745194d61
4
+ data.tar.gz: 7b24882b15fff9bb0ff8498d9dfb7382560a68f1ff3710a7122dafe7f8376e01
5
5
  SHA512:
6
- metadata.gz: d44a8b591d80bd49958fc1e54d1a0caf4e97d0edb62ff73233e4dcaceda200f89d960e7a058788acfa58a65858b2734e2e89594bf4a1671ff6927926928cc49f
7
- data.tar.gz: d85b5dcbf9c5a49e602b2d972b6a47ec49cd79aede4ff7e357e48f27daff14f61f14fcab11f8a21925eb7e2ba6fa694f6032d7523906a8a0859ac507c58c0ea6
6
+ metadata.gz: 9637909fe95e58cdd6a57f08552b68a3abbb666b0693dad54c524ac2a7ea9eb5bf0e87646497f678f4b878e91c629d5ed46e6212c8046c3ed2662f54306dbc21
7
+ data.tar.gz: de85a41e741a08e258062d3e8917ea1fafb41c66643bfd631dac4882c449577ab5baf111d3dcdc3c60ce860e44f59029b80e4c35d20f2a509435f491c698e418
data/README.md CHANGED
@@ -225,7 +225,7 @@ class ShopController < ApplicationController
225
225
  :category_id, Category.all, :id, :name, include_blank: 'Select Category'
226
226
  )
227
227
  config.form.item(:collection_check_boxes, :state_ids, State.all, :id, :name)
228
- config.form.item(:collection_radio_buttons, :status, Shop.statuses.map{|k, v| [v, k.titleize]}, :first, :last)
228
+ config.form.item(:collection_radio_buttons, :status, Shop.statuses.map{|k, _v| [k, k.titleize]}, :first, :last)
229
229
 
230
230
  # If you want to display more free form field, use block.
231
231
  # The block is executed in the context of view, so you can call the method of view.
@@ -242,6 +242,18 @@ class ShopController < ApplicationController
242
242
  end
243
243
  end
244
244
 
245
+ # You can insert HTML before/after the element.
246
+ config.form.item(:file_field, :image).label('Image').insert(:after) do |rec|
247
+ tag.label for: :delete_image do
248
+ concat tag.input type: :checkbox, id: :delete_image, name: 'shop[delete_image]'
249
+ concat 'Delete image'
250
+ end
251
+ end
252
+
253
+ # You need to permit the new form parameters you inserted.
254
+ # And if necessary, add virtual attributes to the model.
255
+ config.form.permit_params(:delete_image)
256
+
245
257
  # You can also add a note to the form field.
246
258
  config.form.item(:text_field, :name).note do
247
259
  content_tag :p do
@@ -1,5 +1,5 @@
1
1
  <%= form_with method: method, model: @record, url: url, local: true do |form| %>
2
- <%dynamic_scaffold.form.items.each do |elem|%>
2
+ <%-dynamic_scaffold.form.items.each do |elem|-%>
3
3
  <% if elem.needs_rendering?(self)%>
4
4
  <% if !elem.label? && elem.type?(:hidden_field) %>
5
5
  <%= elem.render(self, form) %>
@@ -7,6 +7,9 @@
7
7
  <div class="<%= class_names('form-group', {'has-error': @record.errors[elem.proxy_field.name].any?}) %>">
8
8
  <label><%= elem.proxy_field.label %></label>
9
9
  <div class="clearfix">
10
+ <%- elem.insert(:before).each do |block| -%>
11
+ <%= self.instance_exec(@record, &block) %>
12
+ <%-end-%>
10
13
  <% if elem.type? :collection_check_boxes %>
11
14
  <%= elem.render(self, form) do |cb|%>
12
15
  <div class="form-check checkbox">
@@ -26,6 +29,9 @@
26
29
  <% else %>
27
30
  <%= elem.render(self, form, class_names('form-control', {'is-invalid': @record.errors[elem.proxy_field.name].any?})) %>
28
31
  <% end %>
32
+ <%- elem.insert(:after).each do |block| -%>
33
+ <%= self.instance_exec(@record, &block) %>
34
+ <%-end-%>
29
35
  </div>
30
36
  <%if @record.errors[elem.proxy_field.name].any?%>
31
37
  <ul class="dynamicScaffold-error-message">
@@ -214,6 +214,7 @@ module DynamicScaffold
214
214
  def initialize(config)
215
215
  @config = config
216
216
  @items = []
217
+ @permit_params = []
217
218
  end
218
219
 
219
220
  def items
@@ -227,6 +228,15 @@ module DynamicScaffold
227
228
  @items
228
229
  end
229
230
 
231
+ def permit_params(*params)
232
+ if !params.empty?
233
+ @permit_params.concat(params)
234
+ self
235
+ else
236
+ @permit_params
237
+ end
238
+ end
239
+
230
240
  def item(type, *args, &block) # rubocop:disable Metrics/MethodLength
231
241
  case type
232
242
  when
@@ -58,11 +58,10 @@ module DynamicScaffold
58
58
 
59
59
  def create
60
60
  @record = dynamic_scaffold.model.new
61
- prev_attribute = @record.attributes
62
61
  @record.attributes = update_values
63
62
  bind_sorter_value(@record) if dynamic_scaffold.list.sorter
64
63
  dynamic_scaffold.model.transaction do
65
- yield(@record, prev_attribute) if block_given?
64
+ yield(@record) if block_given?
66
65
  if @record.save
67
66
  redirect_to dynamic_scaffold_path(:index)
68
67
  else
@@ -30,9 +30,10 @@ module DynamicScaffold
30
30
 
31
31
  # Get paramters for update record.
32
32
  def update_values
33
+ permitting = dynamic_scaffold.form.items.map(&:strong_parameter).concat(dynamic_scaffold.form.permit_params)
33
34
  values = params
34
35
  .require(dynamic_scaffold.model.name.underscore)
35
- .permit(*dynamic_scaffold.form.items.map(&:strong_parameter))
36
+ .permit(*permitting)
36
37
 
37
38
  if dynamic_scaffold.scope && !valid_for_scope?(values)
38
39
  raise DynamicScaffold::Error::Controller, "You can update only to #{scope_params} on this scope"
@@ -13,6 +13,10 @@ module DynamicScaffold
13
13
  @classnames_list.push(classnames) if classnames
14
14
  @notes = []
15
15
  @multiple = type == :collection_check_boxes || html_attributes[:multiple]
16
+ @inserts = {
17
+ before: [],
18
+ after: []
19
+ }
16
20
  end
17
21
 
18
22
  def notes?
@@ -91,6 +95,15 @@ module DynamicScaffold
91
95
  @default = value
92
96
  end
93
97
 
98
+ def insert(position, &block)
99
+ if block_given?
100
+ @inserts[position] << block
101
+ self
102
+ else
103
+ @inserts[position]
104
+ end
105
+ end
106
+
94
107
  protected
95
108
 
96
109
  def build_html_attributes(classnames)
@@ -1,3 +1,3 @@
1
1
  module DynamicScaffold
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
@@ -79,7 +79,7 @@ class <%= @class_scope.present? ? "#{@class_scope}::" : '' %><%= @plural_model_n
79
79
  # end
80
80
 
81
81
  # def create
82
- # super do |record, prev_attribute|
82
+ # super do |record|
83
83
  # # If you want to modify the attributes of the record before saving, Write here.
84
84
  # end
85
85
  # end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic_scaffold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masamoto Miyata
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-01 00:00:00.000000000 Z
11
+ date: 2018-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: classnames-rails-view