render_to_string の罠
rails 4.1.4
render_to_string(:index, layout: false) # => "文字列"
コンソールでの評価結果やメソッドの名前からは String が返ってくるように見える
でも実際は ActiveSupport::SafeBuffer が返ってくる
render_to_string(:index, layout: false).class # => ActiveSupport::SafeBuffer
さらに to_s で String にならない
render_to_string(:index, layout: false).to_s.class # => ActiveSupport::SafeBuffer
String を得るにはこうする必要があった
render_to_string(:index, layout: false).to_str
ツイートの内容を View に書いておいて Rubytter でツイートしようとしてハマった
text = render_to_string(:index, layout: false) rubytter.update(text) # NoMethodError: undefined method `each_byte' for nil:NilClass # from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/uri/common.rb:307:in `block in escape'