will_filter 3.1.8 → 3.1.9

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- will_filter (3.1.8)
4
+ will_filter (3.1.9)
5
5
  kaminari
6
6
  rails (>= 3.2.3)
7
7
  sass
@@ -828,5 +828,22 @@ module WillFilter
828
828
  def sum(column_name)
829
829
  model_class.sum(column_name, :conditions => sql_conditions)
830
830
  end
831
+
832
+ def max(column_name)
833
+ model_class.maximum(column_name, :conditions => sql_conditions)
834
+ end
835
+
836
+ def min(column_name)
837
+ model_class.minimum(column_name, :conditions => sql_conditions)
838
+ end
839
+
840
+ def avg(column_name)
841
+ model_class.average(column_name, :conditions => sql_conditions)
842
+ end
843
+
844
+ def count(column_name)
845
+ model_class.count(column_name, :conditions => sql_conditions)
846
+ end
847
+
831
848
  end
832
849
  end
@@ -22,18 +22,37 @@
22
22
  opts[:columns].each_with_index do |column, index|
23
23
  cmeta = {}
24
24
 
25
+ # supported notations for columns => [
26
+ # :id,
27
+ # [:id, lambda{|obj| obj.id}],
28
+ # [:id, lambda{|obj| obj.id}, "color: white"],
29
+ # [:id, lambda{|obj| obj.id}, {:style => "color: white"}],
30
+ # [:id, {:filterable => true, :value => lambda{|obj| obj.id}}],
31
+ # [:id, {:filterable => true, :value => lambda{|obj| obj.id}}],
32
+ # {:key => :id, :filterable => true}
33
+ # ]
34
+
25
35
  if column.is_a?(Array)
26
- cmeta[:key] = column[0]
27
- cmeta[:value] = column[1]
28
- unless column[2].nil?
29
- if column[2].is_a?(Hash)
30
- cmeta.merge!(column[2])
31
- elsif column[2].is_a?(String)
32
- cmeta[:style] = column[2]
33
- else
34
- raise WillFilter::FilterException.new("Unsupported table column format #{column[2]}")
35
- end
36
- end
36
+ if column.size < 2
37
+ raise WillFilter::FilterException.new("Array table column definition must have at least two elements")
38
+ end
39
+
40
+ cmeta[:key] = column[0] # first param must always be the column key
41
+
42
+ if column[1].is_a?(Hash) # second param is a hash
43
+ cmeta.merge!(column[1])
44
+ else
45
+ cmeta[:value] = column[1]
46
+ unless column[2].nil?
47
+ if column[2].is_a?(Hash) # third param can be a set of attributes
48
+ cmeta.merge!(column[2])
49
+ elsif column[2].is_a?(String) # third param can be a string, which represents a style
50
+ cmeta[:style] = column[2]
51
+ else
52
+ raise WillFilter::FilterException.new("Unsupported table column format #{column[2]}")
53
+ end
54
+ end
55
+ end
37
56
  elsif column.is_a?(Hash)
38
57
  cmeta = column
39
58
  cmeta[:key] ||= "key_#{index}"
@@ -104,6 +123,11 @@
104
123
  </thead>
105
124
 
106
125
  <tbody>
126
+
127
+ <% if opts[:header] %>
128
+ <%=render(:partial => "/will_filter/common/results_table_summary", :locals => {:data => opts[:header], :filter => filter, :carray => carray}) %>
129
+ <% end -%>
130
+
107
131
  <% results.each_with_index do |obj, index| %>
108
132
  <tr class='data_row <%=(index % 2 == 0) ? "wf_row_even" : "wf_row_odd"%>'>
109
133
  <% carray.each_with_index do |cmeta, column_index| %>
@@ -122,15 +146,22 @@
122
146
  value_style << 'width:30px;' if cmeta[:key] == :checkbox
123
147
  value_class << ' current_sort' if filter.column_sorted?(cmeta[:key])
124
148
 
149
+ if cmeta[:filterable]
150
+ filter_value = cmeta[:value].nil? ? value : obj.send(cmeta[:key])
151
+ end
125
152
  %>
126
153
  <td style='<%=value_style%>' class='<%=value_class%>'>
154
+ <% if cmeta[:filterable] %>
155
+ <div style='float:right;'><%=link_to(image_tag("will_filter/filter.png", :style=>"width:12px;"), results.add_filter_condition(cmeta[:key], :is, filter_value.to_s).to_params, {:title => "Show only #{filter_value}"}) %></div>
156
+ <% end -%>
157
+
127
158
  <% if cmeta[:key] == :checkbox %>
128
159
  <%= check_box_tag("#{value}[]", obj.id, false, :id => "wf_check_#{index}", :onClick => "wfVerifyTrigger(this)") %>
129
160
 
130
161
  <% elsif value.is_a?(Hash) %>
131
162
  <% value.each do |key, value| %>
132
163
  <strong><%=key%>:</strong> <%= value %>;
133
- <% end %>
164
+ <% end -%>
134
165
 
135
166
  <% elsif value.is_a?(Time) %>
136
167
  <%= value.strftime("%m/%d/%Y %l:%M:%S") %>
@@ -139,12 +170,18 @@
139
170
  <%= value.strftime("%m/%d/%Y") %>
140
171
 
141
172
  <% else %>
173
+
142
174
  <%= value.to_s %>
143
- <% end %>
175
+ <% end -%>
144
176
  </td>
145
- <% end %>
177
+ <% end -%>
146
178
  </tr>
147
- <% end %>
179
+ <% end -%>
180
+
181
+ <% if opts[:footer] %>
182
+ <%=render(:partial => "/will_filter/common/results_table_summary", :locals => {:data => opts[:footer], :filter => filter, :carray => carray}) %>
183
+ <% end -%>
184
+
148
185
  </tbody>
149
186
  </table>
150
187
 
@@ -0,0 +1,53 @@
1
+ <% if data[:label] %>
2
+ <tr>
3
+ <td colspan="<%=carray.size%>" style="height:10px; padding:2px; font-size:10px; background-color:#FFF8EF;"><%=data[:label]%></td>
4
+ </tr>
5
+ <% end %>
6
+
7
+ <tr>
8
+ <% carray.each_with_index do |cmeta, column_index|
9
+ vmeta = { }
10
+ if data[:value]
11
+ if data[:value].is_a?(Proc)
12
+ vmeta[:value] = data[:value].call(cmeta[:key])
13
+ elsif data[:value].is_a?(Hash)
14
+ vmeta[:value] = data[:value][cmeta[:key]]
15
+
16
+ if vmeta[:value].is_a?(Hash)
17
+ vmeta.merge!(vmeta[:value])
18
+ elsif vmeta[:value].is_a?(Array)
19
+ vmeta.merge!(vmeta[:value].last)
20
+ vmeta[:value] = vmeta[:value].first
21
+ end
22
+
23
+ if vmeta[:value].is_a?(Symbol)
24
+ case vmeta[:value]
25
+ when :total
26
+ vmeta[:value] = number_to_currency(filter.sum(cmeta[:key]))
27
+ when :sum
28
+ vmeta[:value] = filter.sum(cmeta[:key])
29
+ when :count
30
+ vmeta[:value] = filter.count(cmeta[:key])
31
+ when :min
32
+ vmeta[:value] = filter.min(cmeta[:key])
33
+ when :max
34
+ vmeta[:value] = filter.max(cmeta[:key])
35
+ when :avg
36
+ vmeta[:value] = filter.avg(cmeta[:key])
37
+ when :range
38
+ vmeta[:value] = [filter.min(cmeta[:key]), filter.max(cmeta[:key])].join(" - ")
39
+ end
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+ vmeta[:class] ||= ""
46
+ vmeta[:style] ||= ""
47
+ %>
48
+
49
+ <td style="background-color:#FFF8EF;<%=vmeta[:style]%>" class="<%=vmeta[:class]%>">
50
+ <%= vmeta[:value] %>
51
+ </td>
52
+ <% end %>
53
+ </tr>
@@ -22,5 +22,5 @@
22
22
  #++
23
23
 
24
24
  module WillFilter
25
- VERSION = "3.1.8"
25
+ VERSION = "3.1.9"
26
26
  end
@@ -3,5 +3,12 @@ module Merchant
3
3
  self.table_name = :merchant_orders
4
4
  belongs_to :user
5
5
  has_many :order_items
6
+
7
+ def self.generate_random_data(count = 500)
8
+ 0.upto(count) do
9
+ create(:user_id => User.random, :amount => rand(5000))
10
+ end
11
+ end
12
+
6
13
  end
7
14
  end
@@ -1,9 +1,13 @@
1
1
  module Merchant
2
2
  class OrderFilter < WillFilter::Filter
3
3
 
4
- def inner_joins
5
- [:user]
6
- end
4
+ def model_class
5
+ Merchant::Order
6
+ end
7
+
8
+ # def inner_joins
9
+ # [:user]
10
+ # end
7
11
 
8
12
  end
9
13
  end
@@ -1,9 +1,13 @@
1
1
  module Merchant
2
2
  class OrderItemFilter < WillFilter::Filter
3
3
 
4
- def inner_joins
5
- [:order]
6
- end
4
+ def model_class
5
+ Merchant::OrderItem
6
+ end
7
+
8
+ # def inner_joins
9
+ # [:order]
10
+ # end
7
11
 
8
12
  end
9
13
  end
@@ -1,2 +1,2 @@
1
- <h1>Event Member Filter</h1>
1
+ <h1>Advanced Event Member Filter</h1>
2
2
  <%= render :partial=> "/common/event_members" %>
@@ -1,2 +1,2 @@
1
- <h1>Event Filter</h1>
1
+ <h1>Advanced Event Filter</h1>
2
2
  <%= render :partial=> "/common/events" %>
@@ -1,2 +1,2 @@
1
- <h1>User Filter</h1>
1
+ <h1>Advanced User Filter</h1>
2
2
  <%= render :partial=> "/common/users" %>
@@ -2,14 +2,11 @@
2
2
 
3
3
  <%= will_filter_table_tag(@event_users, :columns => [
4
4
  :id,
5
- [:event_id, lambda { |obj|
6
- link_to(obj.event ? obj.event.name : obj.event_id, @event_users.add_filter_condition(:event_id, :is, obj.event_id).to_params)
7
- }],
8
- [:user_id, lambda { |obj|
9
- link_to(obj.user_id ? obj.user.name : obj.user_id, @event_users.add_filter_condition(:user_id, :is, obj.user_id).to_params)
10
- }, {
11
- :title => 'User Name',
12
- :style => 'font-weight:bold'
5
+ [:event_id, :value => lambda{|e| e.event.name}, :filterable => true],
6
+ [:user_id, {
7
+ :value => lambda{|e| e.user.name},
8
+ :filterable => true,
9
+ :title => 'User Name'
13
10
  }],
14
11
  :created_at
15
12
  ]) %>
@@ -1,3 +1,17 @@
1
1
  <%= will_filter_tag(@events)%>
2
2
 
3
- <%= will_filter_table_tag(@events) %>
3
+ <%= will_filter_table_tag(@events,
4
+ :columns => [
5
+ :id,
6
+ [:creator_id, :value => lambda{|obj| obj.user ? obj.user.name : 'deleted user'}, :filterable => true, :title => 'Creator'],
7
+ :headline,
8
+ [:rank, {:style => "text-align:right; padding:0px;"}],
9
+ :start_time
10
+ ],
11
+ :header => {
12
+ :value => {
13
+ :id => "<strong>Average:</strong>".html_safe,
14
+ :rank => [:avg, {:style=>"color:blue; font-weight:bold; text-align:right;"}]
15
+ }
16
+ }
17
+ ) %>
@@ -2,21 +2,26 @@
2
2
  <center>
3
3
  <table style="width:900px;" cellpadding="0" cellspacing="0">
4
4
  <tr>
5
+ <%
6
+ controller_name = controller.controller_name
7
+ controller_name = "simple" if controller_name == "orders"
8
+ %>
5
9
  <td style="text-align:left;">
6
- <%=link_to("Users", :action => :users) %>
7
- | <%=link_to("Events", :action => :events) %>
8
- | <%=link_to("Event Members", :action => :event_members) %>
9
- <% unless controller.controller_name == 'simple' %>
10
- | <%=link_to("Users with Actions", :action => :users_with_actions) %>
11
- <% end %>
12
- </td>
13
- <td style="text-align:right;">
14
- <% if controller.controller_name == 'simple' %>
15
- <%=link_to("Extended Filters", :controller => :advanced, :action => :users) %>
10
+ <%= controller_name == 'simple' ? "Basic" : "Advanced" %>:
11
+ <%=link_to("Users", :controller => controller_name, :action => :users) %>
12
+ | <%=link_to("Events", :controller => controller_name, :action => :events) %>
13
+ | <%=link_to("Event Members", :controller => controller_name, :action => :event_members) %>
14
+ ||
15
+ <% if controller_name == 'simple' %>
16
+ <%=link_to("Switch to Advanced Filters", :controller => :advanced, :action => :users) %>
16
17
  <% else %>
17
- <%=link_to("Basic Filters", :controller => :simple, :action => :users) %>
18
+ <%=link_to("Switch to Basic Filters", :controller => :simple, :action => :users) %>
18
19
  <% end %>
19
20
  </td>
21
+ <td style="text-align:right;">
22
+ <%=link_to("Users with Actions", :controller => :advanced, :action => :users_with_actions) %> |
23
+ <%=link_to("Custom Header/Footer", :controller => :orders, :action => :index) %>
24
+ </td>
20
25
  </tr>
21
26
  </table>
22
27
  </center>
@@ -35,6 +35,6 @@
35
35
  :sortable => true,
36
36
  :sort_key => lambda{ |filter| filter.column_sorted?(:first_name) ? :first_name : :last_name}
37
37
  },
38
- :birthday,
39
- { :key => :sex, :title => 'Gender' }
38
+ [:birthday, :filterable => true],
39
+ [:sex, {:title => 'Gender', :filterable => true}]
40
40
  ]) %>
@@ -1,2 +1,26 @@
1
+ <h1>Custom Header and Footer</h1>
2
+
1
3
  <%= will_filter_tag(@orders) %>
2
- <%= will_filter_table_tag(@orders) %>
4
+ <%= will_filter_table_tag(@orders,
5
+ :columns => [:id, :user_id, [:amount, :filterable => true], :created_at],
6
+ :header => {
7
+ :label => "Total Amount",
8
+ :value => lambda{ |key|
9
+ if (key == :amount)
10
+ total = @orders.wf_filter.sum(key)
11
+ if total < 1000
12
+ raw("<span style='color:red;'>#{number_to_currency(total)}</span>")
13
+ else
14
+ raw("<span style='color:green;'>#{number_to_currency(total)}</span>")
15
+ end
16
+ end
17
+ }
18
+ },
19
+ :footer => {
20
+ :style => "background-color: #eee;",
21
+ :value => {
22
+ :id => "<strong>Range:</strong>".html_safe,
23
+ :amount => [:range, {:style=>"color:blue; font-weight:bold;"}]
24
+ }
25
+ }
26
+ ) %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: will_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.8
4
+ version: 3.1.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-19 00:00:00.000000000Z
12
+ date: 2012-06-14 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &2152663880 !ruby/object:Gem::Requirement
16
+ requirement: &2157126080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.2.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152663880
24
+ version_requirements: *2157126080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: kaminari
27
- requirement: &2152662420 !ruby/object:Gem::Requirement
27
+ requirement: &2157123600 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152662420
35
+ version_requirements: *2157123600
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sass
38
- requirement: &2152652700 !ruby/object:Gem::Requirement
38
+ requirement: &2157122600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2152652700
46
+ version_requirements: *2157122600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pry
49
- requirement: &2152651440 !ruby/object:Gem::Requirement
49
+ requirement: &2157121060 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2152651440
57
+ version_requirements: *2157121060
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &2152650160 !ruby/object:Gem::Requirement
60
+ requirement: &2157119180 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2152650160
68
+ version_requirements: *2157119180
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
- requirement: &2152648340 !ruby/object:Gem::Requirement
71
+ requirement: &2157117660 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2152648340
79
+ version_requirements: *2157117660
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &2152647000 !ruby/object:Gem::Requirement
82
+ requirement: &2157116020 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2152647000
90
+ version_requirements: *2157116020
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rspec-rails
93
- requirement: &2152645580 !ruby/object:Gem::Requirement
93
+ requirement: &2157113260 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 2.1.0
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2152645580
101
+ version_requirements: *2157113260
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: spork
104
- requirement: &2152643440 !ruby/object:Gem::Requirement
104
+ requirement: &2157110820 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *2152643440
112
+ version_requirements: *2157110820
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: watchr
115
- requirement: &2152642600 !ruby/object:Gem::Requirement
115
+ requirement: &2157107520 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *2152642600
123
+ version_requirements: *2157107520
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rr
126
- requirement: &2152641600 !ruby/object:Gem::Requirement
126
+ requirement: &2157106320 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *2152641600
134
+ version_requirements: *2157106320
135
135
  description: will_filter is a powerful customizable framework for filtering active_record
136
136
  models.
137
137
  email:
@@ -151,12 +151,12 @@ files:
151
151
  - MIT-LICENSE
152
152
  - README.rdoc
153
153
  - Rakefile
154
- - VERSION
155
154
  - app/assets/images/will_filter/.gitkeep
156
155
  - app/assets/images/will_filter/buttons.png
157
156
  - app/assets/images/will_filter/calendar.png
158
157
  - app/assets/images/will_filter/clock.png
159
158
  - app/assets/images/will_filter/close.gif
159
+ - app/assets/images/will_filter/filter.png
160
160
  - app/assets/images/will_filter/sort_arrow_all.gif
161
161
  - app/assets/images/will_filter/sort_bg.gif
162
162
  - app/assets/images/will_filter/spinner.gif
@@ -179,6 +179,7 @@ files:
179
179
  - app/views/will_filter/calendar/index.html.erb
180
180
  - app/views/will_filter/common/_actions_bar.html.erb
181
181
  - app/views/will_filter/common/_results_table.html.erb
182
+ - app/views/will_filter/common/_results_table_summary.html.erb
182
183
  - app/views/will_filter/common/_scripts.html.erb
183
184
  - app/views/will_filter/exporter/export.html.erb
184
185
  - app/views/will_filter/exporter/index.html.erb
@@ -280,7 +281,6 @@ files:
280
281
  - test/dummy/app/views/kaminari/_paginator.html.erb
281
282
  - test/dummy/app/views/kaminari/_prev_page.html.erb
282
283
  - test/dummy/app/views/layouts/application.html.erb
283
- - test/dummy/app/views/layouts/orders.html.erb
284
284
  - test/dummy/app/views/orders/index.html.erb
285
285
  - test/dummy/app/views/orders/items.html.erb
286
286
  - test/dummy/app/views/simple/event_members.html.erb
@@ -342,7 +342,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
342
342
  version: '0'
343
343
  segments:
344
344
  - 0
345
- hash: -4303547157894045742
345
+ hash: 2634563707694904433
346
346
  required_rubygems_version: !ruby/object:Gem::Requirement
347
347
  none: false
348
348
  requirements:
@@ -351,7 +351,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
351
351
  version: '0'
352
352
  segments:
353
353
  - 0
354
- hash: -4303547157894045742
354
+ hash: 2634563707694904433
355
355
  requirements: []
356
356
  rubyforge_project:
357
357
  rubygems_version: 1.8.11
@@ -406,7 +406,6 @@ test_files:
406
406
  - test/dummy/app/views/kaminari/_paginator.html.erb
407
407
  - test/dummy/app/views/kaminari/_prev_page.html.erb
408
408
  - test/dummy/app/views/layouts/application.html.erb
409
- - test/dummy/app/views/layouts/orders.html.erb
410
409
  - test/dummy/app/views/orders/index.html.erb
411
410
  - test/dummy/app/views/orders/items.html.erb
412
411
  - test/dummy/app/views/simple/event_members.html.erb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 3.0.5
@@ -1,16 +0,0 @@
1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
- <html>
3
- <head>
4
- <title>will_filter examples</title>
5
- <%= stylesheet_link_tag "application" %>
6
- <%= javascript_include_tag "application" %>
7
- <%= csrf_meta_tags %>
8
- </head>
9
- <body style="margin:0px;">
10
- <center>
11
- <div style="margin-top:20px;width:900px;text-align:left;">
12
- <%= yield %>
13
- </div>
14
- </center>
15
- </body>
16
- </html>