Ruby on Railsの勉強がてらに呑んだくれリストを作ってみた(その3 Railsアプリ構築編)

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についても試していきたいと思うので、気づいたことがあれば残していこうと思います。

参考

シリーズ