simple_formで表示されるエラーをfull_messagesのものにする
|
|
simple_formをそのまま使うとエラー発生時のエラーの表示がfull_messageではなく、object.errors[:name]みたいにした時の値しか表示してくれない。
こんな感じ。
ちょっとこれだとあんまりなのでfull_messageでメッセージを表示したい
|
|
simple_formをそのまま使うとエラー発生時のエラーの表示がfull_messageではなく、object.errors[:name]みたいにした時の値しか表示してくれない。
こんな感じ。
ちょっとこれだとあんまりなのでfull_messageでメッセージを表示したい
特定のパラメータを常にurlに付与する方法です。
urlにuser_idをクエリなどにふくめておくとgoogle analyticsとか使った時に、特定のユーザがどういうページにアクセスしたかわかりユーザの行動分析に使えたりします。
なのでurlに自動でuser_id=[:user_id]の形式でアクセスしてるページのuser_idが付与されると非常に便利そうです。
参考になったのはjpmobileのソースでした(docomo端末の場合にguidを自動付与したりしています)
docomo_guid.rb
|
|
deviseを使っていて、ユーザモデルに仮登録状態を作りたいと思います。
仮登録の段階ではパスワードはまだ要求されず。
最後の最後でパスワードを設定して本会員登録完了といったフローです。
deviseでは対象モデルにdevise :validatable
に設定している場合はメールアドレスやパスワードの検証が走ります。
今回はパスワード以外のチェックはやってほしいため:validatable
の宣言を外すだけではダメです。
再帰的に条件判定を行うrejectが欲しくなりました。
こういう動きです。
|
|
かなり便利そうです。
任意の条件でnested_attribute_forの対象の保存処理を走らせる方法です
ファイルのアップロード用のモデルを作っていてActionDispatch::Http::UploadedFile
を一旦attr_accessorのアクセサで受けたあとcallbackでファイル名やファイルサイズをmodelクラスの該当のカラムに設定するという処理を書いておりました。
ファイルは可変にアップロードしたかったのでこのモデルの親モデルから参照するようにして、nested_attribute_forで親モデル更新時に一緒に更新するようにします。
|
|
|
|
neste_formは可変なサイズの子要素を動的に追加できるGemです。
いつも大変お世話になっておりますが、今回の案件で追加する先を指定したエレメントの下ではなく上に追加しなければいけなくなり対応しました。
一つ前に携わったプロジェクトではサブシステムがたくさんあり、それぞれがrailsで構築されていて共通処理やmodelはrails engineにあつめられ各システムで参照しておりました。
今までgemのコードリーディングをする時にしか意識していなかったrails engineですが(deviseとかとか)、結構便利だということを今更ながら実感し、最近は共有処理をengineに書き出してそれを参照するようにしています。
クックパッドさんでも共通部分をengineに集めているようです。
新規サービスの管理画面を短期間で見栄え良く実装する
ドリコムさんでは複数のengineを組み合わせてシステムを作っているようです。
Mountable Engine だらけの Rails アプリ開発
普段はよく bootstrap-datepickerを使うのですが、 今回の案件では時刻まで絞り込みたいというお話だったのでdatetimepickerを導入してみました。
こちらを使います。かなり高機能な上に日本語化まで対応できる優れもの。
Eonasdan/bootstrap-datetimepicker
デモを見るだけでもワクワクしますね。
入れ方もたくさん用意されていていいですね。
今回もrails-assetsで導入します。
pecoをランチャーとして使っているのですが、
メニューを呼び出した後ホームポジションから手を離して矢印キーに指を運ぶのが嫌でctrl+jとctrl+kで移動できないかと思っていたら会社の人にやり方を教えてもらいできました。
具体的にはpecoの キーマップを使います
管理画面を作るにあたって bootstrapだけで1から作るのもしんどかったので、フリーのbootstrap用テンプレート bootswatchを使って管理画面を作ってみたいと思います。
導入には以下4パターンがあるかと思います。
今回はrails-assetsで導入してみました。