Ruby on Railsの勉強がてらに呑んだくれリストを作ってみた(その3 Railsアプリ構築編)
その1、その2に引き続き、Ruby on Railsのメモです。(ちなみに呑んだくれリストとはこんな感じのモノです。)
今回は、Ruby on Railsのアプリ構築時に調べた・躓いた点についてのメモです。
目次
改行コードをbrに変換したい
いわゆるPHPで言うところのnl2br
をRailsで行うためには、自分で関数を用意する必要があります。
利用するシーンはそれなりにあると思うので、application_helper.rb
に記述しておくと、何処でも使えて便利です。
def hbr(str)
str = html_escape(str)
str.gsub(/\r\n|\r|\n/, "<br />").html_safe
end
後はViewのERBファイルで呼ぶ際に下記のとおりに書くだけです。
<%= hbr @foo.bar %>
JavaScriptが正常に動作しない
Rails4からTurbolinksというライブラリが追加されており、ページ間遷移を非同期的に処理するようになっています。そのため、コンテンツの中身だけ入れ替えるようになり、特に何も考えなくても通信量が抑えられるようになっています。
しかし、その仕組みがあるために、いつもどおりにJSの記述をしていると正常に動作しないコトがあるため注意です。
jQueryの$(document).readyに注意
jQueryを利用する際の常套句である、$(document).ready
を利用する場合、最初にページを開いた時にしか発火しないため、ページ遷移をした後のページで上手く処理が実行されないコトがあります。
Turbolinksには、次のページを読み完了時にpage:load
というイベントが発火されるので、そちらを利用することで解消するコトが出来ます。
// $( function() {} ); を下記のように書き換える
$(document).on("ready page:load", function () {
// ほげほげ
});
CoffeeScriptの場合はこんな感じ。
$(document).on 'ready page:load', ->
// ほげほげ
return
最終手段
最終手段として、Turbolinksを切ってしまうという手もあります。
アプリケーションを生成する際に、--skip-turbolinks
オプションを追加します。
rails new app_name --skip-turbolinks
また、既に作成済みのアプリから除外する際には、コチラの参考サイトの方法で対応できるかと思います。
とは言え、元々はパフォーマンスを高めるライブラリなので、使える時は使っていきたいですね。
雑記
ひとまずは、環境構築からアプリ制作までの一通りを試してみました。
PHPのFWでも同様にコマンドから開発の補助をしてくれるモノはたくさんありますが、一際補助される範囲が広いように感じました。 特にscaffoldは一通りの画面まで揃えてくれるので、簡易的なものであればサクッと用意できると感じます。
Rubyならではのシンプルな記法も、慣れるまでは大変ですが慣れてしまえば簡易的に記述できるのは面白いですね。
また、引き続きRubyについても試していきたいと思うので、気づいたことがあれば残していこうと思います。
参考
- すずやん::blog: railsで改行コードをに置き換える
- Ruby – Turbolinksさんと上手く付き合う10の方法 – Qiita
- Rails – Turbolinksをオフしないためにやった事 – Qiita
- Ruby – Rails 4 で turbolinks をオフにする方法 – Qiita