「Ruby」タグアーカイブ

Rails: クラス名が ActiveRecord::AttributeMethods 内のモジュールと同じ場合


Rails で作成したクラスの名前が “Read” だったとき、 そして その Read クラス を モデルクラス の中で使用したとき、 次のエラーが出ました。

undefined method `where’ for ActiveRecord::AttributeMethods::Read:Module

Read という クラス ではなく、 Rails が用意している ActiveRecord::AttributeMethods::Read モジュール だと判断されています。 次のようにすると、 作った Read クラス を使用できます。


Rails で nl2br を実現する


PHP にあった nl2br を Rails で実現する方法です。

環境

(Rails が大きく変わらない限り) いろんなバージョンで使えると思います。

  • Rails 4.2.5
  • Ruby 2.0.0
続きを読む Rails で nl2br を実現する

Rails Sprockets::Rails::Helper::AssetFilteredError


Rails では application.js が require_treeassets/javascript 内の javascript ファイル をすべて読み込むようになっています。 その required_tree を削除するとエラーになるのですが、 ここではそのエラーを回避する方法を書き留めておきます。

環境

sprockets を導入していれば 起きるエラーです。 私もいくつかの環境で経験していますが、 今回使っていたのは次の環境でした。

  • Ruby 2.0.0
  • Rails 4.2.5

エラー内容

Sprockets::Rails::Helper::AssetFilteredError – Asset filtered out and will not be served: add Rails.application.config.assets.precompile += %w( xxxx.js ) to config/initializers/assets.rb and restart your server:

解決法

ほかにも解決法はありますが、 次のようにして、 とにかくすべてをコンパイル対象にします。 余計なものまでできてしまう可能性も否定できませんが。


Rails application.js を application.js.coffee や application.js.erb にする


よく忘れることなのでメモしておきます。

application.js.coffee

Rails では あらかじめ application.js が用意されていますが、 これを coffeescript の形式にしたいと思うことがよくあります。 そういうときは次のように 上部のコメントアウト //# に書き換えます。

最後の require_tree は意図的に無効にしています。 余計な javascript まで読み込むので。

こちらは Rails 4.2.5, Ruby 2.0.0 で動くことを確認しています。

また、 Rails の変数・定数を使いたい場合に application.js.erb にしたこともあります。


Ruby 小数点以下第n桁で切り捨てる方法


Ruby で 小数点以下第n桁で切り捨てる方法をメモしておきます。

0.81235 などのリテラル (Float) には floor という関数があり、 小数点以下の切り捨てが可能ですが、 小数点以下の桁を残して切り捨てることはできません。

環境

  • Ruby 2.2.3p173
  • OS: Ubuntu 15.04
続きを読む Ruby 小数点以下第n桁で切り捨てる方法