actionview 7.0.2.4 → 7.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/action_view/gem_version.rb +3 -3
- data/lib/action_view/helpers/asset_tag_helper.rb +2 -2
- data/lib/action_view/helpers/asset_url_helper.rb +7 -7
- data/lib/action_view/helpers/date_helper.rb +8 -4
- data/lib/action_view/helpers/form_helper.rb +8 -7
- data/lib/action_view/helpers/form_options_helper.rb +2 -2
- data/lib/action_view/helpers/number_helper.rb +2 -2
- data/lib/action_view/helpers/rendering_helper.rb +4 -5
- data/lib/action_view/helpers/tag_helper.rb +7 -6
- data/lib/action_view/helpers/text_helper.rb +1 -1
- data/lib/action_view/helpers/url_helper.rb +48 -37
- data/lib/action_view/layouts.rb +7 -4
- data/lib/action_view/record_identifier.rb +1 -1
- data/lib/action_view/renderer/partial_renderer.rb +1 -1
- data/lib/action_view/rendering.rb +2 -2
- data/lib/action_view/template/resolver.rb +1 -1
- data/lib/action_view/test_case.rb +1 -1
- data/lib/action_view/version.rb +1 -1
- data/lib/action_view/view_paths.rb +4 -4
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6af4c7a802749c1b40166455cc93dfcec088fdc31eaca3269c508ef52016ac2
|
4
|
+
data.tar.gz: 0d8837cbed462e3fa6e9db13854f0a76935237a6c4a75d6524ab1a5a61040fa2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c0557eabdfc17f5802a63e9e0ba42a18edcb46c45daff7d72ddc82093203be75bc77123330eba23c30fc923faf6a25d2f25fbb06b4cc3aa5e3459b4da555851
|
7
|
+
data.tar.gz: b626145a5588762f7dd44b2d458ea81d394ff514dcc85a78ef0b0ca9d15e3bc069851a5c15c520449b2c4ece1eb6c28c96a45719f84e4b8255a3b6668f739e7c
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ActionView
|
4
|
-
# Returns the version of
|
4
|
+
# Returns the currently loaded version of Action View as a <tt>Gem::Version</tt>.
|
5
5
|
def self.gem_version
|
6
6
|
Gem::Version.new VERSION::STRING
|
7
7
|
end
|
@@ -9,8 +9,8 @@ module ActionView
|
|
9
9
|
module VERSION
|
10
10
|
MAJOR = 7
|
11
11
|
MINOR = 0
|
12
|
-
TINY =
|
13
|
-
PRE =
|
12
|
+
TINY = 3
|
13
|
+
PRE = nil
|
14
14
|
|
15
15
|
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
|
16
16
|
end
|
@@ -517,9 +517,9 @@ module ActionView
|
|
517
517
|
|
518
518
|
def extract_dimensions(size)
|
519
519
|
size = size.to_s
|
520
|
-
if /\A\d+x\d
|
520
|
+
if /\A(\d+|\d+.\d+)x(\d+|\d+.\d+)\z/.match?(size)
|
521
521
|
size.split("x")
|
522
|
-
elsif /\A\d
|
522
|
+
elsif /\A(\d+|\d+.\d+)\z/.match?(size)
|
523
523
|
[size, size]
|
524
524
|
end
|
525
525
|
end
|
@@ -219,7 +219,7 @@ module ActionView
|
|
219
219
|
|
220
220
|
# Computes the full URL to an asset in the public directory. This
|
221
221
|
# will use +asset_path+ internally, so most of their behaviors
|
222
|
-
# will be the same. If
|
222
|
+
# will be the same. If +:host+ options is set, it overwrites global
|
223
223
|
# +config.action_controller.asset_host+ setting.
|
224
224
|
#
|
225
225
|
# All other options provided are forwarded to +asset_path+ call.
|
@@ -324,7 +324,7 @@ module ActionView
|
|
324
324
|
|
325
325
|
# Computes the full URL to a JavaScript asset in the public javascripts directory.
|
326
326
|
# This will use +javascript_path+ internally, so most of their behaviors will be the same.
|
327
|
-
# Since +javascript_url+ is based on +asset_url+ method you can set
|
327
|
+
# Since +javascript_url+ is based on +asset_url+ method you can set +:host+ options. If +:host+
|
328
328
|
# options is set, it overwrites global +config.action_controller.asset_host+ setting.
|
329
329
|
#
|
330
330
|
# javascript_url "js/xmlhr.js", host: "http://stage.example.com" # => http://stage.example.com/assets/js/xmlhr.js
|
@@ -351,7 +351,7 @@ module ActionView
|
|
351
351
|
|
352
352
|
# Computes the full URL to a stylesheet asset in the public stylesheets directory.
|
353
353
|
# This will use +stylesheet_path+ internally, so most of their behaviors will be the same.
|
354
|
-
# Since +stylesheet_url+ is based on +asset_url+ method you can set
|
354
|
+
# Since +stylesheet_url+ is based on +asset_url+ method you can set +:host+ options. If +:host+
|
355
355
|
# options is set, it overwrites global +config.action_controller.asset_host+ setting.
|
356
356
|
#
|
357
357
|
# stylesheet_url "css/style.css", host: "http://stage.example.com" # => http://stage.example.com/assets/css/style.css
|
@@ -381,7 +381,7 @@ module ActionView
|
|
381
381
|
|
382
382
|
# Computes the full URL to an image asset.
|
383
383
|
# This will use +image_path+ internally, so most of their behaviors will be the same.
|
384
|
-
# Since +image_url+ is based on +asset_url+ method you can set
|
384
|
+
# Since +image_url+ is based on +asset_url+ method you can set +:host+ options. If +:host+
|
385
385
|
# options is set, it overwrites global +config.action_controller.asset_host+ setting.
|
386
386
|
#
|
387
387
|
# image_url "edit.png", host: "http://stage.example.com" # => http://stage.example.com/assets/edit.png
|
@@ -407,7 +407,7 @@ module ActionView
|
|
407
407
|
|
408
408
|
# Computes the full URL to a video asset in the public videos directory.
|
409
409
|
# This will use +video_path+ internally, so most of their behaviors will be the same.
|
410
|
-
# Since +video_url+ is based on +asset_url+ method you can set
|
410
|
+
# Since +video_url+ is based on +asset_url+ method you can set +:host+ options. If +:host+
|
411
411
|
# options is set, it overwrites global +config.action_controller.asset_host+ setting.
|
412
412
|
#
|
413
413
|
# video_url "hd.avi", host: "http://stage.example.com" # => http://stage.example.com/videos/hd.avi
|
@@ -433,7 +433,7 @@ module ActionView
|
|
433
433
|
|
434
434
|
# Computes the full URL to an audio asset in the public audios directory.
|
435
435
|
# This will use +audio_path+ internally, so most of their behaviors will be the same.
|
436
|
-
# Since +audio_url+ is based on +asset_url+ method you can set
|
436
|
+
# Since +audio_url+ is based on +asset_url+ method you can set +:host+ options. If +:host+
|
437
437
|
# options is set, it overwrites global +config.action_controller.asset_host+ setting.
|
438
438
|
#
|
439
439
|
# audio_url "horse.wav", host: "http://stage.example.com" # => http://stage.example.com/audios/horse.wav
|
@@ -458,7 +458,7 @@ module ActionView
|
|
458
458
|
|
459
459
|
# Computes the full URL to a font asset.
|
460
460
|
# This will use +font_path+ internally, so most of their behaviors will be the same.
|
461
|
-
# Since +font_url+ is based on +asset_url+ method you can set
|
461
|
+
# Since +font_url+ is based on +asset_url+ method you can set +:host+ options. If +:host+
|
462
462
|
# options is set, it overwrites global +config.action_controller.asset_host+ setting.
|
463
463
|
#
|
464
464
|
# font_url "font.ttf", host: "http://stage.example.com" # => http://stage.example.com/fonts/font.ttf
|
@@ -26,7 +26,7 @@ module ActionView
|
|
26
26
|
MINUTES_IN_QUARTER_YEAR = 131400
|
27
27
|
MINUTES_IN_THREE_QUARTERS_YEAR = 394200
|
28
28
|
|
29
|
-
# Reports the approximate distance in time between two Time, Date or DateTime objects or integers as seconds.
|
29
|
+
# Reports the approximate distance in time between two Time, Date, or DateTime objects or integers as seconds.
|
30
30
|
# Pass <tt>include_seconds: true</tt> if you want more detailed approximations when distance < 1 min, 29 secs.
|
31
31
|
# Distances are reported based on the following table:
|
32
32
|
#
|
@@ -291,12 +291,12 @@ module ActionView
|
|
291
291
|
Tags::DateSelect.new(object_name, method, self, options, html_options).render
|
292
292
|
end
|
293
293
|
|
294
|
-
# Returns a set of select tags (one for hour, minute and optionally second) pre-selected for accessing a
|
294
|
+
# Returns a set of select tags (one for hour, minute, and optionally second) pre-selected for accessing a
|
295
295
|
# specified time-based attribute (identified by +method+) on an object assigned to the template (identified by
|
296
296
|
# +object+). You can include the seconds with <tt>:include_seconds</tt>. You can get hours in the AM/PM format
|
297
297
|
# with <tt>:ampm</tt> option.
|
298
298
|
#
|
299
|
-
# This method will also generate 3 input hidden tags, for the actual year, month and day unless the option
|
299
|
+
# This method will also generate 3 input hidden tags, for the actual year, month, and day unless the option
|
300
300
|
# <tt>:ignore_date</tt> is set to +true+. If you set the <tt>:ignore_date</tt> to +true+, you must have a
|
301
301
|
# +date_select+ on the same method within the form otherwise an exception will be raised.
|
302
302
|
#
|
@@ -871,6 +871,10 @@ module ActionView
|
|
871
871
|
end
|
872
872
|
end
|
873
873
|
|
874
|
+
def prompt_text(prompt, type)
|
875
|
+
prompt.kind_of?(String) ? prompt : I18n.translate(:"datetime.prompts.#{type}", locale: @options[:locale])
|
876
|
+
end
|
877
|
+
|
874
878
|
# If the day is hidden, the day should be set to the 1st so all month and year choices are
|
875
879
|
# valid. Otherwise, February 31st or February 29th, 2011 can be selected, which are invalid.
|
876
880
|
def set_day_if_discarded
|
@@ -1144,7 +1148,7 @@ module ActionView
|
|
1144
1148
|
I18n.translate(:"datetime.prompts.#{type}", locale: @options[:locale])
|
1145
1149
|
end
|
1146
1150
|
|
1147
|
-
prompt ? content_tag("option", prompt, value: "") : ""
|
1151
|
+
prompt ? content_tag("option", prompt_text(prompt, type), value: "") : ""
|
1148
1152
|
end
|
1149
1153
|
|
1150
1154
|
# Builds hidden input tag for date part and value.
|
@@ -438,7 +438,7 @@ module ActionView
|
|
438
438
|
model = nil
|
439
439
|
object_name = record
|
440
440
|
else
|
441
|
-
model = record
|
441
|
+
model = convert_to_model(record)
|
442
442
|
object = _object_for_form_builder(record)
|
443
443
|
raise ArgumentError, "First argument in form cannot contain nil or be empty" unless object
|
444
444
|
object_name = options[:as] || model_name_from_record_or_class(object).param_key
|
@@ -1014,9 +1014,10 @@ module ActionView
|
|
1014
1014
|
# <% end %>
|
1015
1015
|
#
|
1016
1016
|
# Note that fields_for will automatically generate a hidden field
|
1017
|
-
# to store the ID of the record
|
1018
|
-
# hidden field is not needed and you
|
1019
|
-
# to prevent fields_for from
|
1017
|
+
# to store the ID of the record if it responds to <tt>persisted?</tt>.
|
1018
|
+
# There are circumstances where this hidden field is not needed and you
|
1019
|
+
# can pass <tt>include_id: false</tt> to prevent fields_for from
|
1020
|
+
# rendering it automatically.
|
1020
1021
|
def fields_for(record_name, record_object = nil, options = {}, &block)
|
1021
1022
|
options = { model: record_object, allow_method_names_outside_object: false, skip_default_ids: false }.merge!(options)
|
1022
1023
|
|
@@ -1082,7 +1083,7 @@ module ActionView
|
|
1082
1083
|
|
1083
1084
|
# Returns a label tag tailored for labelling an input field for a specified attribute (identified by +method+) on an object
|
1084
1085
|
# assigned to the template (identified by +object+). The text of label will default to the attribute name unless a translation
|
1085
|
-
# is found in the current I18n locale (through helpers.label.<modelname>.<attribute>) or you specify it explicitly.
|
1086
|
+
# is found in the current I18n locale (through <tt>helpers.label.<modelname>.<attribute></tt>) or you specify it explicitly.
|
1086
1087
|
# Additional options on the label tag can be passed as a hash with +options+. These options will be tagged
|
1087
1088
|
# onto the HTML as an HTML element attribute as in the example shown, except for the <tt>:value</tt> option, which is designed to
|
1088
1089
|
# target labels for radio_button tags (where the value is used in the ID of the input tag).
|
@@ -2285,7 +2286,7 @@ module ActionView
|
|
2285
2286
|
@template.fields_for(record_name, record_object, fields_options, &block)
|
2286
2287
|
end
|
2287
2288
|
|
2288
|
-
# See the docs for the
|
2289
|
+
# See the docs for the ActionView::Helpers::FormHelper#fields helper method.
|
2289
2290
|
def fields(scope = nil, model: nil, **options, &block)
|
2290
2291
|
options[:allow_method_names_outside_object] = true
|
2291
2292
|
options[:skip_default_ids] = !FormHelper.form_with_generates_ids
|
@@ -2297,7 +2298,7 @@ module ActionView
|
|
2297
2298
|
|
2298
2299
|
# Returns a label tag tailored for labelling an input field for a specified attribute (identified by +method+) on an object
|
2299
2300
|
# assigned to the template (identified by +object+). The text of label will default to the attribute name unless a translation
|
2300
|
-
# is found in the current I18n locale (through helpers.label.<modelname>.<attribute>) or you specify it explicitly.
|
2301
|
+
# is found in the current I18n locale (through <tt>helpers.label.<modelname>.<attribute></tt>) or you specify it explicitly.
|
2301
2302
|
# Additional options on the label tag can be passed as a hash with +options+. These options will be tagged
|
2302
2303
|
# onto the HTML as an HTML element attribute as in the example shown, except for the <tt>:value</tt> option, which is designed to
|
2303
2304
|
# target labels for radio_button tags (where the value is used in the ID of the input tag).
|
@@ -598,9 +598,9 @@ module ActionView
|
|
598
598
|
#
|
599
599
|
# Options:
|
600
600
|
# * <tt>:index_as_value</tt> - Defaults to false, set to true to use the indexes from
|
601
|
-
#
|
601
|
+
# <tt>I18n.translate("date.day_names")</tt> as the values. By default, Sunday is always 0.
|
602
602
|
# * <tt>:day_format</tt> - The I18n key of the array to use for the weekday options.
|
603
|
-
#
|
603
|
+
# Defaults to +:day_names+, set to +:abbr_day_names+ for abbreviations.
|
604
604
|
# * <tt>:beginning_of_week</tt> - Defaults to Date.beginning_of_week.
|
605
605
|
#
|
606
606
|
# NOTE: Only the option tags are returned, you have to wrap this call in
|
@@ -9,13 +9,13 @@ module ActionView
|
|
9
9
|
module Helpers # :nodoc:
|
10
10
|
# Provides methods for converting numbers into formatted strings.
|
11
11
|
# Methods are provided for phone numbers, currency, percentage,
|
12
|
-
# precision, positional notation, file size and pretty printing.
|
12
|
+
# precision, positional notation, file size, and pretty printing.
|
13
13
|
#
|
14
14
|
# Most methods expect a +number+ argument, and will return it
|
15
15
|
# unchanged if can't be converted into a valid number.
|
16
16
|
module NumberHelper
|
17
17
|
# Raised when argument +number+ param given to the helpers is invalid and
|
18
|
-
# the option
|
18
|
+
# the option +:raise+ is set to +true+.
|
19
19
|
class InvalidNumberError < StandardError
|
20
20
|
attr_accessor :number
|
21
21
|
def initialize(number)
|
@@ -10,8 +10,8 @@ module ActionView
|
|
10
10
|
module RenderingHelper
|
11
11
|
# Returns the result of a render that's dictated by the options hash. The primary options are:
|
12
12
|
#
|
13
|
-
# * <tt>:partial</tt> - See
|
14
|
-
# * <tt>:file</tt> - Renders an explicit template file (this used to be the old default), add
|
13
|
+
# * <tt>:partial</tt> - See ActionView::PartialRenderer.
|
14
|
+
# * <tt>:file</tt> - Renders an explicit template file (this used to be the old default), add +:locals+ to pass in those.
|
15
15
|
# * <tt>:inline</tt> - Renders an inline template similar to how it's done in the controller.
|
16
16
|
# * <tt>:plain</tt> - Renders the text passed in out. Setting the content
|
17
17
|
# type as <tt>text/plain</tt>.
|
@@ -19,8 +19,7 @@ module ActionView
|
|
19
19
|
# performs HTML escape on the string first. Setting the content type as
|
20
20
|
# <tt>text/html</tt>.
|
21
21
|
# * <tt>:body</tt> - Renders the text passed in, and inherits the content
|
22
|
-
# type of <tt>text/plain</tt> from
|
23
|
-
# object.
|
22
|
+
# type of <tt>text/plain</tt> from ActionDispatch::Response object.
|
24
23
|
#
|
25
24
|
# If no <tt>options</tt> hash is passed or if <tt>:update</tt> is specified, then:
|
26
25
|
#
|
@@ -47,7 +46,7 @@ module ActionView
|
|
47
46
|
end
|
48
47
|
end
|
49
48
|
|
50
|
-
#
|
49
|
+
# Overrides _layout_for in the context object so it supports the case a block is
|
51
50
|
# passed to a partial. Returns the contents that are yielded to a layout, given a
|
52
51
|
# name or a block.
|
53
52
|
#
|
@@ -45,8 +45,8 @@ module ActionView
|
|
45
45
|
include CaptureHelper
|
46
46
|
include OutputSafetyHelper
|
47
47
|
|
48
|
-
HTML_VOID_ELEMENTS = %i(area base br col
|
49
|
-
|
48
|
+
HTML_VOID_ELEMENTS = %i(area base br col embed hr img input keygen link meta param source track wbr).to_set
|
49
|
+
SVG_SELF_CLOSING_ELEMENTS = %i(animate animateMotion animateTransform circle ellipse line path polygon polyline rect set stop use view).to_set
|
50
50
|
|
51
51
|
def initialize(view_context)
|
52
52
|
@view_context = view_context
|
@@ -69,8 +69,9 @@ module ActionView
|
|
69
69
|
escape = handle_deprecated_escape_options(options)
|
70
70
|
|
71
71
|
content = @view_context.capture(self, &block) if block_given?
|
72
|
-
|
73
|
-
|
72
|
+
self_closing = SVG_SELF_CLOSING_ELEMENTS.include?(name)
|
73
|
+
if (HTML_VOID_ELEMENTS.include?(name) || self_closing) && content.nil?
|
74
|
+
"<#{name.to_s.dasherize}#{tag_options(options, escape)}#{self_closing ? " />" : ">"}".html_safe
|
74
75
|
else
|
75
76
|
content_tag_string(name.to_s.dasherize, content || "", options, escape)
|
76
77
|
end
|
@@ -239,7 +240,7 @@ module ActionView
|
|
239
240
|
#
|
240
241
|
# Thus <tt>data-user-id</tt> can be accessed as <tt>dataset.userId</tt>.
|
241
242
|
#
|
242
|
-
# Data attribute values are encoded to JSON, with the exception of strings, symbols and
|
243
|
+
# Data attribute values are encoded to JSON, with the exception of strings, symbols, and
|
243
244
|
# BigDecimals.
|
244
245
|
# This may come in handy when using jQuery's HTML5-aware <tt>.data()</tt>
|
245
246
|
# from 1.4.3.
|
@@ -271,7 +272,7 @@ module ActionView
|
|
271
272
|
# Transforms a Hash into HTML attributes, ready to be interpolated into
|
272
273
|
# ERB. Includes or omits boolean attributes based on their truthiness.
|
273
274
|
# Transforms keys nested within
|
274
|
-
# <tt>aria:</tt> or <tt>data:</tt> objects into
|
275
|
+
# <tt>aria:</tt> or <tt>data:</tt> objects into <tt>aria-</tt> and <tt>data-</tt>
|
275
276
|
# prefixed attributes:
|
276
277
|
#
|
277
278
|
# <input <%= tag.attributes(type: :text, aria: { label: "Search" }) %>>
|
@@ -268,7 +268,7 @@ module ActionView
|
|
268
268
|
end
|
269
269
|
|
270
270
|
# Returns +text+ transformed into HTML using simple formatting rules.
|
271
|
-
# Two or more consecutive newlines(<tt>\n\n</tt> or <tt>\r\n\r\n</tt>) are
|
271
|
+
# Two or more consecutive newlines (<tt>\n\n</tt> or <tt>\r\n\r\n</tt>) are
|
272
272
|
# considered a paragraph and wrapped in <tt><p></tt> tags. One newline
|
273
273
|
# (<tt>\n</tt> or <tt>\r\n</tt>) is considered a linebreak and a
|
274
274
|
# <tt><br /></tt> tag is appended. This method does not remove the
|
@@ -89,21 +89,6 @@ module ActionView
|
|
89
89
|
#
|
90
90
|
# ==== Options
|
91
91
|
# * <tt>:data</tt> - This option can be used to add custom data attributes.
|
92
|
-
# * <tt>method: symbol of HTTP verb</tt> - This modifier will dynamically
|
93
|
-
# create an HTML form and immediately submit the form for processing using
|
94
|
-
# the HTTP verb specified. Useful for having links perform a POST operation
|
95
|
-
# in dangerous actions like deleting a record (which search bots can follow
|
96
|
-
# while spidering your site). Supported verbs are <tt>:post</tt>, <tt>:delete</tt>, <tt>:patch</tt>, and <tt>:put</tt>.
|
97
|
-
# Note that if the user has JavaScript disabled, the request will fall back
|
98
|
-
# to using GET. If <tt>href: '#'</tt> is used and the user has JavaScript
|
99
|
-
# disabled clicking the link will have no effect. If you are relying on the
|
100
|
-
# POST behavior, you should check for it in your controller's action by using
|
101
|
-
# the request object's methods for <tt>post?</tt>, <tt>delete?</tt>, <tt>patch?</tt>, or <tt>put?</tt>.
|
102
|
-
# * <tt>remote: true</tt> - This will allow the unobtrusive JavaScript
|
103
|
-
# driver to make an Ajax request to the URL in question instead of following
|
104
|
-
# the link. The drivers each provide mechanisms for listening for the
|
105
|
-
# completion of the Ajax request and performing JavaScript operations once
|
106
|
-
# they're complete
|
107
92
|
#
|
108
93
|
# ==== Examples
|
109
94
|
#
|
@@ -180,28 +165,43 @@ module ActionView
|
|
180
165
|
# link_to "Nonsense search", searches_path(foo: "bar", baz: "quux")
|
181
166
|
# # => <a href="/searches?foo=bar&baz=quux">Nonsense search</a>
|
182
167
|
#
|
183
|
-
#
|
184
|
-
#
|
185
|
-
# link_to("Destroy", "http://www.example.com", method: :delete)
|
186
|
-
# # => <a href='http://www.example.com' rel="nofollow" data-method="delete">Destroy</a>
|
187
|
-
#
|
188
|
-
# Also you can set any link attributes such as <tt>target</tt>, <tt>rel</tt>, <tt>type</tt>:
|
168
|
+
# You can set any link attributes such as <tt>target</tt>, <tt>rel</tt>, <tt>type</tt>:
|
189
169
|
#
|
190
170
|
# link_to "External link", "http://www.rubyonrails.org/", target: "_blank", rel: "nofollow"
|
191
171
|
# # => <a href="http://www.rubyonrails.org/" target="_blank" rel="nofollow">External link</a>
|
192
172
|
#
|
193
|
-
# ==== Deprecated: Rails UJS
|
173
|
+
# ==== Deprecated: Rails UJS Attributes
|
194
174
|
#
|
195
|
-
# Prior to Rails 7, Rails shipped with a JavaScript library called
|
175
|
+
# Prior to Rails 7, Rails shipped with a JavaScript library called <tt>@rails/ujs</tt> on by default. Following Rails 7,
|
196
176
|
# this library is no longer on by default. This library integrated with the following options:
|
197
177
|
#
|
198
|
-
# * <tt>
|
199
|
-
#
|
178
|
+
# * <tt>method: symbol of HTTP verb</tt> - This modifier will dynamically
|
179
|
+
# create an HTML form and immediately submit the form for processing using
|
180
|
+
# the HTTP verb specified. Useful for having links perform a POST operation
|
181
|
+
# in dangerous actions like deleting a record (which search bots can follow
|
182
|
+
# while spidering your site). Supported verbs are <tt>:post</tt>, <tt>:delete</tt>, <tt>:patch</tt>, and <tt>:put</tt>.
|
183
|
+
# Note that if the user has JavaScript disabled, the request will fall back
|
184
|
+
# to using GET. If <tt>href: '#'</tt> is used and the user has JavaScript
|
185
|
+
# disabled clicking the link will have no effect. If you are relying on the
|
186
|
+
# POST behavior, you should check for it in your controller's action by using
|
187
|
+
# the request object's methods for <tt>post?</tt>, <tt>delete?</tt>, <tt>patch?</tt>, or <tt>put?</tt>.
|
188
|
+
# * <tt>remote: true</tt> - This will allow <tt>@rails/ujs</tt>
|
189
|
+
# to make an Ajax request to the URL in question instead of following
|
190
|
+
# the link.
|
191
|
+
#
|
192
|
+
# <tt>@rails/ujs</tt> also integrated with the following +:data+ options:
|
193
|
+
#
|
194
|
+
# * <tt>confirm: "question?"</tt> - This will allow <tt>@rails/ujs</tt>
|
195
|
+
# to prompt with the question specified (in this case, the
|
200
196
|
# resulting text would be <tt>question?</tt>). If the user accepts, the
|
201
197
|
# link is processed normally, otherwise no action is taken.
|
202
198
|
# * <tt>:disable_with</tt> - Value of this parameter will be used as the
|
203
|
-
# name for a disabled version of the link.
|
204
|
-
#
|
199
|
+
# name for a disabled version of the link.
|
200
|
+
#
|
201
|
+
# ===== Rails UJS Examples
|
202
|
+
#
|
203
|
+
# link_to "Remove Profile", profile_path(@profile), method: :delete
|
204
|
+
# # => <a href="/profiles/1" rel="nofollow" data-method="delete">Remove Profile</a>
|
205
205
|
#
|
206
206
|
# link_to "Visit Other Site", "http://www.rubyonrails.org/", data: { confirm: "Are you sure?" }
|
207
207
|
# # => <a href="http://www.rubyonrails.org/" data-confirm="Are you sure?">Visit Other Site</a>
|
@@ -255,8 +255,6 @@ module ActionView
|
|
255
255
|
# <tt>:delete</tt>, <tt>:patch</tt>, and <tt>:put</tt>. By default it will be <tt>:post</tt>.
|
256
256
|
# * <tt>:disabled</tt> - If set to true, it will generate a disabled button.
|
257
257
|
# * <tt>:data</tt> - This option can be used to add custom data attributes.
|
258
|
-
# * <tt>:remote</tt> - If set to true, will allow the Unobtrusive JavaScript drivers to control the
|
259
|
-
# submit behavior. By default this behavior is an ajax submit.
|
260
258
|
# * <tt>:form</tt> - This hash will be form attributes
|
261
259
|
# * <tt>:form_class</tt> - This controls the class of the form within which the submit button will
|
262
260
|
# be placed
|
@@ -298,25 +296,38 @@ module ActionView
|
|
298
296
|
# # <input name="authenticity_token" type="hidden" value="10f2163b45388899ad4d5ae948988266befcb6c3d1b2451cf657a0c293d605a6" autocomplete="off"/>
|
299
297
|
# # </form>"
|
300
298
|
#
|
301
|
-
# <%= button_to "Create", { action: "create" },
|
302
|
-
# # => "<form method="post" action="/images/create" class="button_to" data-
|
299
|
+
# <%= button_to "Create", { action: "create" }, form: { "data-type" => "json" } %>
|
300
|
+
# # => "<form method="post" action="/images/create" class="button_to" data-type="json">
|
303
301
|
# # <button type="submit">Create</button>
|
304
302
|
# # <input name="authenticity_token" type="hidden" value="10f2163b45388899ad4d5ae948988266befcb6c3d1b2451cf657a0c293d605a6" autocomplete="off"/>
|
305
303
|
# # </form>"
|
306
304
|
#
|
307
|
-
# ==== Deprecated: Rails UJS
|
305
|
+
# ==== Deprecated: Rails UJS Attributes
|
308
306
|
#
|
309
|
-
# Prior to Rails 7, Rails shipped with a JavaScript library called
|
307
|
+
# Prior to Rails 7, Rails shipped with a JavaScript library called <tt>@rails/ujs</tt> on by default. Following Rails 7,
|
310
308
|
# this library is no longer on by default. This library integrated with the following options:
|
311
309
|
#
|
312
|
-
# * <tt
|
313
|
-
#
|
310
|
+
# * <tt>:remote</tt> - If set to true, will allow <tt>@rails/ujs</tt> to control the
|
311
|
+
# submit behavior. By default this behavior is an Ajax submit.
|
312
|
+
#
|
313
|
+
# <tt>@rails/ujs</tt> also integrated with the following +:data+ options:
|
314
|
+
#
|
315
|
+
# * <tt>confirm: "question?"</tt> - This will allow <tt>@rails/ujs</tt>
|
316
|
+
# to prompt with the question specified (in this case, the
|
314
317
|
# resulting text would be <tt>question?</tt>). If the user accepts, the
|
315
318
|
# button is processed normally, otherwise no action is taken.
|
316
319
|
# * <tt>:disable_with</tt> - Value of this parameter will be
|
317
320
|
# used as the value for a disabled version of the submit
|
318
|
-
# button when the form is submitted.
|
319
|
-
#
|
321
|
+
# button when the form is submitted.
|
322
|
+
#
|
323
|
+
# ===== Rails UJS Examples
|
324
|
+
#
|
325
|
+
# <%= button_to "Create", { action: "create" }, remote: true, form: { "data-type" => "json" } %>
|
326
|
+
# # => "<form method="post" action="/images/create" class="button_to" data-remote="true" data-type="json">
|
327
|
+
# # <button type="submit">Create</button>
|
328
|
+
# # <input name="authenticity_token" type="hidden" value="10f2163b45388899ad4d5ae948988266befcb6c3d1b2451cf657a0c293d605a6" autocomplete="off"/>
|
329
|
+
# # </form>"
|
330
|
+
#
|
320
331
|
def button_to(name = nil, options = nil, html_options = nil, &block)
|
321
332
|
html_options, options = options, name if block_given?
|
322
333
|
html_options ||= {}
|
data/lib/action_view/layouts.rb
CHANGED
@@ -183,7 +183,7 @@ module ActionView
|
|
183
183
|
# be rendered directly, without wrapping a layout around the rendered view.
|
184
184
|
#
|
185
185
|
# Both the <tt>:only</tt> and <tt>:except</tt> condition can accept an arbitrary number of method references, so
|
186
|
-
#
|
186
|
+
# <tt>except: [ :rss, :text_only ]</tt> is valid, as is <tt>except: :rss</tt>.
|
187
187
|
#
|
188
188
|
# == Using a different layout in the action render call
|
189
189
|
#
|
@@ -255,14 +255,17 @@ module ActionView
|
|
255
255
|
# true:: raise an ArgumentError
|
256
256
|
# nil:: Force default layout behavior with inheritance
|
257
257
|
#
|
258
|
-
# Return value of +Proc+ and +Symbol+ arguments should be +String+, +false+, +true
|
258
|
+
# Return value of +Proc+ and +Symbol+ arguments should be +String+, +false+, +true+, or +nil+
|
259
259
|
# with the same meaning as described above.
|
260
|
+
#
|
260
261
|
# ==== Parameters
|
262
|
+
#
|
261
263
|
# * <tt>layout</tt> - The layout to use.
|
262
264
|
#
|
263
265
|
# ==== Options (conditions)
|
264
|
-
#
|
265
|
-
# *
|
266
|
+
#
|
267
|
+
# * +:only+ - A list of actions to apply this layout to.
|
268
|
+
# * +:except+ - Apply this layout to all actions but this one.
|
266
269
|
def layout(layout, conditions = {})
|
267
270
|
include LayoutConditions unless conditions.empty?
|
268
271
|
|
@@ -102,7 +102,7 @@ module ActionView
|
|
102
102
|
# on the default implementation (which just joins all key attributes with '_') or on your own
|
103
103
|
# overwritten version of the method. By default, this implementation passes the key string through a
|
104
104
|
# method that replaces all characters that are invalid inside DOM ids, with valid ones. You need to
|
105
|
-
# make sure yourself that your dom ids are valid, in case you
|
105
|
+
# make sure yourself that your dom ids are valid, in case you override this method.
|
106
106
|
def record_key_for_dom_id(record) # :doc:
|
107
107
|
key = convert_to_model(record).to_key
|
108
108
|
key ? key.join(JOIN) : key
|
@@ -27,7 +27,7 @@ module ActionView
|
|
27
27
|
# This would first render <tt>advertiser/_account.html.erb</tt> with <tt>@buyer</tt> passed in as the local variable +account+, then
|
28
28
|
# render <tt>advertiser/_ad.html.erb</tt> and pass the local variable +ad+ to the template for display.
|
29
29
|
#
|
30
|
-
# == The
|
30
|
+
# == The +:as+ and +:object+ options
|
31
31
|
#
|
32
32
|
# By default ActionView::PartialRenderer doesn't have any local variables.
|
33
33
|
# The <tt>:object</tt> option can be used to pass an object to the partial. For instance:
|
@@ -33,8 +33,8 @@ module ActionView
|
|
33
33
|
super
|
34
34
|
end
|
35
35
|
|
36
|
-
#
|
37
|
-
def process(
|
36
|
+
# Override process to set up I18n proxy.
|
37
|
+
def process(...) # :nodoc:
|
38
38
|
old_config, I18n.config = I18n.config, I18nProxy.new(I18n.config, lookup_context)
|
39
39
|
super
|
40
40
|
ensure
|
@@ -19,7 +19,7 @@ module ActionView
|
|
19
19
|
def build_path_regex
|
20
20
|
handlers = Template::Handlers.extensions.map { |x| Regexp.escape(x) }.join("|")
|
21
21
|
formats = Template::Types.symbols.map { |x| Regexp.escape(x) }.join("|")
|
22
|
-
locales = "[a-z]{2}(
|
22
|
+
locales = "[a-z]{2}(?:[-_][A-Z]{2})?"
|
23
23
|
variants = "[^.]*"
|
24
24
|
|
25
25
|
%r{
|
@@ -57,7 +57,7 @@ module ActionView
|
|
57
57
|
include ActiveSupport::Testing::ConstantLookup
|
58
58
|
|
59
59
|
delegate :lookup_context, to: :controller
|
60
|
-
attr_accessor :controller, :output_buffer, :rendered
|
60
|
+
attr_accessor :controller, :request, :output_buffer, :rendered
|
61
61
|
|
62
62
|
module ClassMethods
|
63
63
|
def tests(helper_class)
|
data/lib/action_view/version.rb
CHANGED
@@ -91,9 +91,9 @@ module ActionView
|
|
91
91
|
self.class._prefixes
|
92
92
|
end
|
93
93
|
|
94
|
-
#
|
94
|
+
# LookupContext is the object responsible for holding all
|
95
95
|
# information required for looking up templates, i.e. view paths and
|
96
|
-
# details. Check
|
96
|
+
# details. Check ActionView::LookupContext for more information.
|
97
97
|
def lookup_context
|
98
98
|
@_lookup_context ||=
|
99
99
|
ActionView::LookupContext.new(self.class._view_paths, details_for_lookup, _prefixes)
|
@@ -103,7 +103,7 @@ module ActionView
|
|
103
103
|
{}
|
104
104
|
end
|
105
105
|
|
106
|
-
# Append a path to the list of view paths for the current
|
106
|
+
# Append a path to the list of view paths for the current LookupContext.
|
107
107
|
#
|
108
108
|
# ==== Parameters
|
109
109
|
# * <tt>path</tt> - If a String is provided, it gets converted into
|
@@ -113,7 +113,7 @@ module ActionView
|
|
113
113
|
lookup_context.view_paths.push(*path)
|
114
114
|
end
|
115
115
|
|
116
|
-
# Prepend a path to the list of view paths for the current
|
116
|
+
# Prepend a path to the list of view paths for the current LookupContext.
|
117
117
|
#
|
118
118
|
# ==== Parameters
|
119
119
|
# * <tt>path</tt> - If a String is provided, it gets converted into
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.
|
4
|
+
version: 7.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 7.0.
|
19
|
+
version: 7.0.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 7.0.
|
26
|
+
version: 7.0.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: builder
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,28 +92,28 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - '='
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 7.0.
|
95
|
+
version: 7.0.3
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - '='
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 7.0.
|
102
|
+
version: 7.0.3
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: activemodel
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
107
|
- - '='
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 7.0.
|
109
|
+
version: 7.0.3
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - '='
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: 7.0.
|
116
|
+
version: 7.0.3
|
117
117
|
description: Simple, battle-tested conventions and helpers for building web pages.
|
118
118
|
email: david@loudthinking.com
|
119
119
|
executables: []
|
@@ -246,10 +246,10 @@ licenses:
|
|
246
246
|
- MIT
|
247
247
|
metadata:
|
248
248
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
249
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.0.
|
250
|
-
documentation_uri: https://api.rubyonrails.org/v7.0.
|
249
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.0.3/actionview/CHANGELOG.md
|
250
|
+
documentation_uri: https://api.rubyonrails.org/v7.0.3/
|
251
251
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
252
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.0.
|
252
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.0.3/actionview
|
253
253
|
rubygems_mfa_required: 'true'
|
254
254
|
post_install_message:
|
255
255
|
rdoc_options: []
|
@@ -267,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
267
267
|
version: '0'
|
268
268
|
requirements:
|
269
269
|
- none
|
270
|
-
rubygems_version: 3.
|
270
|
+
rubygems_version: 3.3.7
|
271
271
|
signing_key:
|
272
272
|
specification_version: 4
|
273
273
|
summary: Rendering framework putting the V in MVC (part of Rails).
|