アーカイブ

‘Ruby on Rails’ カテゴリーのアーカイブ

ruby 1.9.3以降でruby-debugでエラーになるとき

2012 年 6 月 20 日 コメントはありません

ruby 1.9.3以降でruby-debugでエラーになるとき、以下を実行する。覚書です。

bash < <(curl -L https://raw.github.com/gist/1518441/)

カテゴリー: Ruby on Rails タグ:

yaml_dbがRails 3.2でadd_limitというエラー

2012 年 6 月 18 日 コメントはありません

いつもトラブルので自分用にメモ
データのバックアップや移行にyaml_dbを使わせていただいているが、Rails 3.2ではadd_limit!というようなエラーが出てうまく使えないことがある。

Gemfileで、git付きで別のソースを読み込むとうまくいくことがある。アップデートしてくれるといいな。

#gem 'yaml_db'
gem 'yaml_db', :git => "https://github.com/lostapathy/yaml_db.git"

参考
http://rubygems.org/gems/yaml_db
https://github.com/ludicast/yaml_db/issues/31

カテゴリー: Ruby on Rails タグ:

Ruby on Rails 3.xでバリデーションの表示を変える

2012 年 6 月 11 日 コメントはありません

Ruby on Rails 3.xでバリデーションのとき、バリデーションにひっかかったところを教えてくれる機能がある。
ところが、CSSを使用していると画面がずれてしまうことがあった。とくに、JQuery Mobileとの相性はよくなくて、JQuery Mobileは簡単な設定で画面を作るのでCSSをいじってもどうしようもなくなる。

そこでエラー時の表示を変える方法があった。Ruby on Railsでは標準ではエラーとなるときに、field_with_errorsというdivタグで囲んでしまう。そこをinputやselectタグをdivタグで囲まずにクラスでfield_with_errorsを付ける方法である。
(別の方法としては、divタグでは囲まずにspanタグで囲むという方法もあるので併記してみた)
あとは、cssでエラー時の表示を定義するだけである。
これだけのために、のべで数日間という時間を費やしてしまった。

config/application.rb

module xxxxxx
  class Application < Rails::Application
    ActionView::Base.field_error_proc = Proc.new { |html_tag, instance|
      if html_tag.sub!(/class="/, 'class="field_with_errors ').nil?
        html_tag.sub! /(\/?>)/, ' class="field_with_errors"\1'
      end
      html_tag.html_safe
    }
  end
end

app/assets/stylesheets/xxx.css

input.field_with_errors, select.field_with_errors {
  padding: 1px;
  background-color: #8FC7DE;
  display: table;
}

または、spanタグで

module xxxxxx
  class Application < Rails::Application
    ActionView::Base.field_error_proc = Proc.new {|html_tag, instance|
      %(<span class="fieldWithErrors">#{html_tag})}
  end
end
span.field_with_errors {
  padding: 1px;
  background-color: #8FC7DE;
  display: table;
}

または中身を以下のようにすれば、赤で囲みます。

  padding: 3px;
  border:2px solid red;

参考:
http://qiita.com/items/2319
http://doruby.kbmj.com/mai_on_rails/20080328/_fieldWithErrors_ActionView_Base_field_error_proc

カテゴリー: Ruby on Rails タグ: