LoginSignup
2
1

More than 3 years have passed since last update.

Rails6 のちょい足しな新機能を試す21(html_safe編)

Posted at

はじめに

Rails 6 に追加されそうな新機能を試す第21段。 今回のちょい足し機能は、 String#html_safe 編です。
Rails 6.0 では、 html_safe?true な文字列から [] でインデックスを指定して抜き出した部分文字列も html_safe? が true となるようになりました。

Ruby 2.6.3, Rails 6.0.0.rc1 で確認しました。Rails 6.0.0.rc1 は gem install rails --prerelease でインストールできます。

$  rails --version
Rails 6.0.0.rc1

Rails プロジェクトを作る

$ rails new rails6_0_0rc1
$ cd rails6_0_0rc1

Controller と View を作る

controller と View を作ります。

$ bin/rails g controller html_safe index

HtmlSafeController#index を修正する

controller で、html_safe な文字列を作成し、そこから一部を抜き出します。

app/controllers/html_safe_controller.rb
class HtmlSafeController < ApplicationController
  def index
    str = '<em>This is HTML safe string first part</em><strong>This is HTML safe string second part</strong>'.html_safe
    i = str.index('<strong>')
    @html_safe_str1 = str[0...i]
    @html_safe_str2 = str[i..]
  end
end

View を修正する

index.html.erb で controller で抜き出した一部の文字列を表示します。

app/views/html_safe/index.html.erb
<h1>HtmlSafe</h1>
<p>
  @html_safe_str1 = <%= @html_safe_str1 %>
</p>
<p>
  @html_safe_str2 = <%= @html_safe_str2 %>
</p>

rails server を実行して表示する

bin/rails s を実行してブラウザから http://localhost:3000/html_safe/index にアクセスします。
html safe な文字列として処理されていることがわかります。

2019-05-19-091744_414x128_scrot.png

Rails 5 では?

Rails 5.2.3 では、抜き出した文字列の html_safe?false になるため、以下のようにエスケープ処理されてしまいます。
2019-05-19-091825_466x63_scrot.png

試したソースは以下にあります。
https://github.com/suketa/rails6_0_0rc1/tree/try021_html_safe

参考情報

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1