rc1以後の更新はありません。
🔗 Action View CHANGELOG(v7.1.0.rc1)
🔗 Introduce ActionView::TestCase.register_parser by seanpdoyle · Pull Request #49194 · rails/rails
ActionView::TestCase.register_parserを導入。register_parser :rss, -> rendered { RSS::Parser.parse(rendered) } test "renders RSS" do article = Article.create!(title: "Hello, world") render formats: :rss, partial: article assert_equal "Hello, world", rendered.rss.items.last.title endデフォルトでは、
:htmlおよび:json用のパーサーが登録される。Sean Doyle
同CHANGELOGより
🔗 Action View CHANGELOG(v7.1.0.beta1)
🔗 Fix: simple_format with blank wrapper_tag option returns plain html tag. by akhilgkrishnan · Pull Request #49120 · rails/rails
simple_formatに空のwrapper_tagオプションを渡すと素のHTMLタグが返される問題を修正。デフォルトの
simple_formatは、<p>で囲んだテキストを返す。しかしwrapper_tag: nilオプションを指定すると<></>タグで囲まれたテキストが返されていた。修正前:
simple_format("Hello World", {}, { wrapper_tag: nil }) # <>Hello World</>修正後:
simple_format("Hello World", {}, { wrapper_tag: nil }) # <p>Hello World</p>Akhil G Krishnan, Junichi Ito
同CHANGELOGより
参考: Rails API simple_format -- ActionView::Helpers::TextHelper
🔗 Don't double-encode nested field_id and field_name index by seanpdoyle · Pull Request #47436 · rails/rails
ネストした
field_idやfield_nameの添字の値を二重エンコードしないよう修正。ビューのヘルパーメソッド
field_idとfield_nameに、index: @optionsをデフォルトのキーワード引数として渡すようになった。Sean Doyle
同CHANGELOGより
参考: 週刊Railsウォッチ20230802: ネストしたfield_idとfield_nameの添字の値を二重エンコードしないようになった
🔗 Allow opting in/out of Link preload headers when calling stylesheet_link_tag or javascript_include_tag by ghiculescu · Pull Request #48553 · rails/rails
stylesheet_link_tagやjavascript_include_tagの呼び出しでLink preloadヘッダーをオン/オフできるようになった。# コンフィグで有効になっていてもヘッダーをオフにする javascript_include_tag("http://example.com/all.js", preload_links_header: false) # コンフィグで無効になっていてもヘッダーをオンにする stylesheet_link_tag("http://example.com/all.js", preload_links_header: true)Alex Ghiculescu
同CHANGELOGより
参考: 週刊Railsウォッチ20230802: Linkヘッダーのプリロードをオンオフできるようになった
🔗 Stop appending preload links once the head is already 1kB by casperisfine · Pull Request #48405 · rails/rails
プリロードが1KBに達したら
Link preloadヘッダーの生成を止めるようになった。一部のプロキシで巨大ヘッダーの処理に問題が生じているが、さらに重要なことは、
Link preloadの効果は時とともに減少していくため、使いすぎは望ましくない。より厳密な制御が必要な場合は、自動プリロード生成を無効にし、コントローラーやミドルウェアから手動でプリロードを生成することが推奨される。
Jean Boussier
同CHANGELOGより
🔗 Handle sanitize_options in simple_format helper by faraquet · Pull Request #48355 · rails/rails
simple_formatヘルパーで:sanitize_optionsを扱えるようになった。サニタイズに追加したい任意のオプションを追加できる。変更前:
simple_format("<a target=\"_blank\" href=\"http://example.com\">Continue</a>") # => "<p><a href=\"http://example.com\">Continue</a></p>"変更後:
simple_format("<a target=\"_blank\" href=\"http://example.com\">Continue</a>", {}, { sanitize_options: { attributes: %w[target href] } }) # => "<p><a target=\"_blank\" href=\"http://example.com\">Continue</a></p>"Andrei Andriichuk
同CHANGELOGより
参考: 週刊Railsウォッチ20230621: simple_formatに:sanitize_optionsが追加
🔗 Update Action View to use HTML5 standards-compliant sanitizers by flavorjones · Pull Request #48293 · rails/rails
HTML5標準に準拠したサニタイザのサポートが追加された。Rails 7.1ではデフォルトで
Rails::HTML5::Sanitizerが使われる(サポートされている場合)。Action Viewで使うHTMLサニタイザは、
config.action_view.sanitizer_vendorで設定可能。サポートされている値は以下のいずれか。
Rails::HTML4::SanitizerRails::HTML5::SanitizerRails 7.1では、サポートされている場合にこのコンフィグを
Rails::HTML5::Sanitizerに設定し、Rails::HTML4::Sanitizerにフォールバックする。従来のデフォルトはRails::HTML4::Sanitizer。Mike Dalessio
同CHANGELOGより
参考: 週刊Railsウォッチ20230621: Action Viewのサニタイザが更新されてHTML Living Standard(旧HTML5)準拠になった
🔗 Introduce config.dom_testing_default_html_version and use Rails::Dom::Testing to parse HTML in test helpers by flavorjones · Pull Request #48682 · rails/rails
ActionView::TestCase#document_root_elementで使われるHTMLパーサーが以下のコンフィグで制御されるようになった。config.dom_testing_default_html_versionこれにより、
Rails::Dom::Testingのアサーションで使われるDOMが作成されるようになる。Rails 7.1のデフォルト設定では、ブラウザのユーザーエージェントでDOM表示をより正確に表現できる
HTML5パーサーが使われる(サポートされている場合)。従来は、このテストヘルパーで常にNokogiriのHTML4パーサーが使われていた。Mike Dalessio
同CHANGELOGより
参考: 週刊Railsウォッチ20230823: config.dom_testing_default_html_versionが追加
参考: - config.dom_testing_default_html_version -- Rails アプリケーションを設定する - Railsガイド
🔗 Add a picture_tag helper by jpbalarini · Pull Request #48100 · rails/rails
HTMLの
pictureタグのサポートが追加された。このタグにはString、Array、またはBlockを渡すことが可能。
imgタグに:imageキーを介して直接プロパティを渡せる。
pictureタグにはimgタグが必要なため、提供する最後の要素がimgタグに使われる。
ブロックを渡すことでpictureタグ全体を完全に制御することも可能。これにより、tag内のコンテンツが適切に設定される。単一の画像ソースは以下のように指定できる。
<%= picture_tag("picture.webp") %>上によって以下のHTMLが生成される。
<picture> <img src="/images/picture.webp" /> </picture>複数の画像ソースは以下のように指定できる。
<%= picture_tag("picture.webp", "picture.png", :class => "mt-2", :image => { alt: "Image", class: "responsive-img" }) %>上によって以下のHTMLが生成される。
<picture class="mt-2"> <source srcset="/images/picture.webp" /> <source srcset="/images/picture.png" /> <img alt="Image" class="responsive-img" src="/images/picture.png" /> </picture>以下のようにブロックを使うことで完全に制御できる。
<%= picture_tag(:class => "my-class") do %> <%= tag(:source, :srcset => image_path("picture.webp")) %> <%= tag(:source, :srcset => image_path("picture.png")) %> <%= image_tag("picture.png", :alt => "Image") %> <% end %>上によって以下のHTMLが生成される。
<picture class="my-class"> <source srcset="/images/picture.webp" /> <source srcset="/images/picture.png" /> <img alt="Image" src="/images/picture.png" /> </picture>Juan Pablo Balarini
同CHANGELOGより
参考: 週刊Railsウォッチ20230607: HTMLのpictureタグをサポート
🔗 Remove deprecated support to instance variables as locals to partials · rails/rails@8241178
インスタンス変数をlocalsとしてパーシャルに渡せる非推奨の振る舞いを削除。
Rafael Mendonça França
同CHANGELOGより
参考: 週刊Railsウォッチ20210222: render 'partial'でのインスタンス変数代入が非推奨化された
🔗 Remove deprecated constant ActionView::Path · rails/rails@23344d4
非推奨化された
ActionView::Path定数を削除。Rafael Mendonça França
同CHANGELOGより
🔗 token_list: Guard Stimulus' data-action from multiple escapes by seanpdoyle · Pull Request #47318 · rails/rails
token_listでHTMLエスケープが呼び出されすぎないよう保護。Sean Doyle
同CHANGELOGより
参考: 週刊Railsウォッチ20230307: token_listヘルパーでStimulusのdata-actionを余分なエスケープから保護する
🔗 Allow f.select to be called with a single hash containing options and HTML options by ghiculescu · Pull Request #46629 · rails/rails
selectの呼び出しで、オプションとHTMLオプションを単一のハッシュに含めて渡せるようになった以前は以下の書き方では動作しなかった。
<%= select :post, :author, authors, required: true %>そのため、以下のように書く必要があった。
<%= select :post, :author, authors, {}, required: true %>修正後は、HTMLの
required、multiple、size属性についてどちらの書き方も可能になった。Alex Ghiculescu
同CHANGELOGより
参考: §3 セレクトボックスを簡単に作成する -- Action View フォームヘルパー - Railsガイド
🔗 Fix Issue #46677 by kryzhovnik · Pull Request #46678 · rails/rails
日時のフォームヘルパー(
time_field、date_field、datetime_field、week_field、month_field)の:valueオプションにTime/Date/DateTimeのインスタンスを渡せるようになった。修正前:
<%= form.datetime_field :written_at, value: Time.current.strftime("%Y-%m-%dT%T") %>修正後:
<%= form.datetime_field :written_at, value: Time.current %>Andrey Samsonov
同CHANGELOGより
参考: Rails API ActionView::Helpers::FormHelper
🔗 Add support for HTML attributes of optgroups to select helper by cgunther · Pull Request #43019 · rails/rails
selectボックスの選択肢でグループ化またはネストしたコレクションを使う場合、オプションでHTML属性を子配列の最後の要素として含められるようになった。<%= form.select :foo, [["North America", [["United States","US"],["Canada","CA"]], { disabled: "disabled" }]] %> #=> <select><optgroup label="North America" disabled="disabled"><option value="US">United States</option><option value="CA">Canada</option></optgroup></select>Chris Gunther
同CHANGELOGより
参考: #43019はRails 7.0.5に含まれています。
🔗 Support checked as a keyword argument in check_box_tag and radio_button_tag by ghiculescu · Pull Request #45527 · rails/rails
check_box_tagとradio_button_tagにcheckedをキーワード引数として渡せるようになった。
FormHelper系のAPIとの一貫性を高めるため。checkedは位置引数としてもキーワード引数としても指定可能になった。= check_box_tag "admin", "1", false = check_box_tag "admin", "1", checked: false = radio_button_tag 'favorite_color', 'maroon', false = radio_button_tag 'favorite_color', 'maroon', checked: falseAlex Ghiculescu
同CHANGELOGより
参考: 週刊Railsウォッチ20221115: check_box_tagとradio_button_tagでchecked:キーワード引数が利用可能になった
🔗 [FIX #46021] Allow passing classes to dom_id by goulvench · Pull Request #46068 · rails/rails
dom_idにクラスを直接渡せるようになった。今後は
dom_idにクラスを渡すときにnewを呼ぶ必要はなくなる。
これにより、dom_idのこの振る舞いはdom_classに近くなる。
入力量が少なく済むのみならず、文字列を生成するためだけにRubyが新しいオブジェクト全体をインスタンス化せずに済むようになる。変更前:
dom_id(Post) # => NoMethodError: undefined method `to_key' for Post:Class変更後:
dom_id(Post) # => "new_post"Goulven Champenois
同CHANGELOGより
参考: 週刊Railsウォッチ20221011: dom_idにクラスを渡せるようになった
🔗 Add :locals to ActionView rendering instrumentation by aarongough · Pull Request #45977 · rails/rails
Action Viewの
renderのinstrumentationで返されるデータに:localsも含まれるようになった。変更前:
{ identifier: "/Users/adam/projects/notifications/app/views/posts/index.html.erb", layout: "layouts/application" }変更後:
{ identifier: "/Users/adam/projects/notifications/app/views/posts/index.html.erb", layout: "layouts/application", locals: {foo: "bar"} }Aaron Gough
同CHANGELOGより
参考: 週刊Railsウォッチ20221003: Action Viewレンダリングのinstrumentationが返すデータに:localsも出力可能になった
🔗 Replace rstrip with chomp!(break_sequence) in word_wrap by maxim · Pull Request #45942 · rails/rails
word_wrapにおけるbreak_sequence(改行シーケンス)の削除を最後に行うようになった。これにより、印刷可能文字を含む改行シーケンスが
word_wrapで正しく削除されないバグが修正される。たとえば以下のテンプレートの出力は次のようになる。
# <%= word_wrap("11 22\n33 44", line_width: 2, break_sequence: "\n# ") %>修正前:
# 11 # 22 # # 33 # 44 #修正後:
# 11 # 22 # 33 # 44Max Chernyak
同CHANGELOGより
参考: Rails API word_wrap -- ActionView::Helpers::TextHelper
🔗 Allow templates to define which locals they accept by joelhawksley · Pull Request #45602 · rails/rails
テンプレートの
localsを厳密に設定できるようになった。デフォルトでは、任意の
localsをキーワード引数として渡せる。
テンプレートが受け取るべきlocalsを定義するには、以下のようにlocalsをマジックコメントの形で追加する。<%# locals: (message:) -%> <%= message %>以下のようにデフォルト値も指定できる。
<%# locals: (message: "Hello, world!") -%> <%= message %>以下のように書くと
localsを完全に無効にできる。<%# locals: () %>Joel Hawksley
同CHANGELOGより
参考: 週刊Railsウォッチ20220822: テンプレートが受け取れるローカル変数をマジックコメントで定義可能になった
🔗 Add include_seconds option to datetime_local_field. by morgoth · Pull Request #45188 · rails/rails
datetime_local_fieldにinclude_secondsオプションを追加。
include_seconds: falseを指定することで、入力フィールドの秒の部分を省略できるようになる。Wojciech Wnętrzak
同CHANGELOGより
参考: Rails 7.1に入る主要な機能まとめ(1): datetime_fieldにinclude_secondsオプションが追加された
参考: Rails API datetime_field -- ActionView::Helpers::FormHelper
🔗 Support calls to #field_name with nil object_name by seanpdoyle · Pull Request #45366 · rails/rails
ActionView::Helpers::FormTagHelperの#field_name呼び出しでobject_name引数がnilの場合でもエラーにならないようになった。<%= fields do |f| %> <%= f.field_name :body %> <% end %>Sean Doyle
同CHANGELOGより
参考: この修正はRails 7.0.4に含まれています。
🔗 Strings returned from strip_tags are correctly tagged html_safe? by flavorjones · Pull Request #45218 · rails/rails
strip_tagsで返される文字列が正しくhtml_safe?とタグ付けされるようになった。これらの文字列にはHTML要素が含まれず、基本的なエンティティもエスケープ済みなので、HTMLコンテンツ内のPCDATAとしてそのまま安全に含められる。レンダリング中に
SafeBufferに結合されるときに、エンティティが二重エスケープされるのを防ぐため、html-safeとしてタグ付けされる。修正: rails/rails-html-sanitizer#124
Mike Dalessio
同CHANGELOGより
参考: この修正はRails 7.0.4に含まれています。
参考: 週刊Railsウォッチ20220606: strip_tagsから返される文字列がhtml_safe?で正しくタグ付けされるよう修正
🔗 Move convert_to_model call from form_for into form_with by seanpdoyle · Pull Request #44468 · rails/rails
form_forのconvert_to_model呼び出しをform_withに移動。
form_forがform_withで実装されるようになったので、convert_to_model呼び出しをform_forから削除した。Sean Doyle
同CHANGELOGより
参考: Implement form_for by delegating to form_with by seanpdoyle · Pull Request #43421 · rails/rails
参考: 週刊Railsウォッチ20220531: convert_to_model呼び出しをform_forからform_withに移動
🔗 Fix and add protections for XSS in names. · rails/rails@649516c
ActionView::HelpersとERB::UtilのXSS保護を修正および追加。タグヘルパーのタグ名や属性名に含まれる危険な文字をXML仕様に従ってエスケープする。従来の
:escape_attributesオプションを:escapeにリネームし、オプションをタグ全体に適用することでシンプルにした。Álvaro Martín Fraguas
同CHANGELOGより
参考: このセキュリティ修正は7.0.2.4でリリース済みです。
参考: 週刊Railsウォッチ20220510: ActionView::HelpersとERB::UtilのXSS修正と保護の追加
🔗 Extend audio_tag and video_tag to accept Active Storage attachments by MatheusRich · Pull Request #44085 · rails/rails
Active Storageの添付ファイルに
audio_tagとvideo_tagを渡せるようになった。これにより、以下のように書ける。
audio_tag(user.audio_file) video_tag(user.video_file)従来は以下のように書かなければならなかった。
audio_tag(polymorphic_path(user.audio_file)) video_tag(polymorphic_path(user.video_file))既にサポートされている
image_tagと同じパターン。Matheus Richard
同CHANGELOGより
参考: 週刊Railsウォッチ20220328: audio_tagやvideo_tagにActiveStorage::Attachmentオブジェクトを渡せるようにした
🔗 form_for: Attempt to call to_model on first argument by seanpdoyle · Pull Request #44328 · rails/rails
form_forに渡したモデルに対してto_model呼び出しを試行するようになった。Sean Doyle
同CHANGELOGより
以前の変更については7-0-stableのCHANGELOGを参照。
関連記事
Rails 7.1に入る主要な機能まとめ(2)error_highlight対応、routes --grepほか(翻訳)
概要
MITライセンスに基づいて翻訳・公開いたします。
参考: Action View の概要 - Railsガイド