ピスタチオを食べながらrailsを楽しむ

ピスタチオ大好きな著者のrailsを使ったツール作成の日記です。

2014-01-01から1年間の記事一覧

Bootstrapのfile inputをキレイに整える(Rails4,form-horizontal)

他にも記事はたくさんあるがRails4でgemを使わない方法が見つからなかったので備忘録のために投稿。 実際にfileをアップロードするためのフィールドは隠す 隠したフィールドを使うためにbtn(又はlabel)にclassを指定し擬似的にクリックさせる 実際にアップ…

新しくrailsプロジェクトを始めた(git clone)

以下、tips・・・というわけでもなくただの作業備忘録。 mkdir 2.1.1 #=>新プロジェクトで使うrubyのバージョン用 cd 2.1.1 git clone git@github.com:username/newproject.git rbenv install --list #=>2.1.1があるか確認 rbenv install 2.1.1 rbenv local …

bootstrapでtooltipを使う

tooltipとは 特定の要素に吹き出し型のテキストを表示出来る。 # app/assets/javascripts/tooltips.js.coffee jQuery -> $(".tooltip").tooltip() # app/views/tooltips/index.html.erb <div> <span class="tooltip">これ</span>がツールチップです。 </div> この状態でこれにカーソルを合わせるとtoo…

はてなブログで見たまま編集したものをmarkdownで更新する

方法は簡単。 "見たまま編集"で作成した記事を編集する "見たまま編集"状態で記事を全てコピーする ブラウザ側で別タブを開きmarkdownで設定している状態で新規記事を作成する 新規記事側でコピーしたものをペーストしmarkdown記法で編集 新規記事側でプレビ…

nginxのproxy_set_headerが適用されない場合

proxy_set_headerの前にproxy_passを書かなくてはいけない。このルールを知らなかった。 proxy_pass http://upstream_name; #=>proxy_set_headerより前に書く!! proxy_set_header X-Forwarded-Ssl on; proxy_set_header hogehoge; これでOK!!

Railsで最終更新日時を取得する

以下の方法で取得出来た。 <% @users.each do |user| %> <%= user.tasks.order(:updated_at).last %> #=>更新日時が最後のtaskオブジェクトを取得 <%= user.tasks.order(:updated_at).last.updated_at.in_time_zone('Tokyo').strftime('%Y/%m/%d %H:%M:%S') …

Dateの比較演算が失敗したときの対処

結論から書くと比較対象にnullなデータが含まれていた。 nullは比較演算ができないためエラーが発生。 undefined method `<=' for nil:NilClassというエラーが出ていた。 実際のコードは以下のとおり。 <%= link_to "hogehoge", hogehoge_path, class: "#{ '…

bootstrapでinput-group-btnを使ったときのwidthの変更方法

ググっても有力な情報が見つからなかったので備忘として記録。 <div class="input-group"> <%= f.text-field :name, class: "form-control" %> <span class="input-group-btn"> <f.submit "更新", class: "btn btn-primary" %> <%= button_tag class: "btn btn-default", type: :button do %> <span class="glyphicon glyphicon-remove"></span> <% end %> …</f.submit></span></div>

tr要素にdata属性をrailsっぽく付ける

他に方法を知らない&忘れそうなので備忘録。 <%= content_tag "tr", class: "hoge fuga", data: { abc: hogehoge, def: fugafuga} do %> <td></td> <% end %>

centOS6.5+unicorn+nginx+独自ドメイン(ムームー)でSSLを導入する

概要 手順として以下の作業が必要となる。 SSL証明書取得準備 SSL証明書取得 SSL証明書をサーバに設置 nginx側でSSLの設定 SSLはrapidSSLにする。理由は安く実績もそれなりにあるため。 SSL証明書取得準備 まず前提としてwhoisの公開代行をしているとSSLの審…

ransackで[:q]を違う文字列にする

同一ページ内に複数のテーブルを表示、それぞれの検索フォームが必要となったため調べた。 # app/controllers/tasks_controller.rb def index @search = Task.search(params[:q]) @different_search = Different.search(params[:different], search_key: :di…

ransack+kaminari

メモメモ autopagerizeのような動作をkaminariとransackを使った環境で実装した - @znz blog

アーカイブ機能の実装について

アーカイブ機能を実装してみた。 条件は以下の通り。 ・statusがtrueになっている 且つ ・最終更新日時から1時間を経過している のどちらにも該当したものはリストから除外する。 アーカイブ側は上記条件通りにwhereを書けば良いので単純。 def archive @arc…

railsで動的にclassを追加する

要素のclass(やid)を動的に追加したいという場面があった。 結論としてはどちらもその通り書けば良かった。 <span class="<%= 'text-muted' if task.status? %>"></span> この場合だとtaskのステータスがtrueの場合のみtext-mutedがspan要素に付加されることとなる。

railsでkaminariを使いmore(続きを表示)機能を実装

ruby on rails - if statement in js.erb file based on param_name will_paginate (Ajax call) - Stack Overflow この記事に全てがあった。 具体的にはkaminariのhelperを上書きする。 ransackと組み合わせた場合に検索条件が引き継がれていないのでこの点…

railsで使えそうな並べ替えライブラリ

Rails 4で作るドラッグアンドドロップで表示順を変更できるサンプルアプリ(スクリーンキャスト付き) - Qiita ranked-modelというgem。記事ではjquryUIのsortableというライブラリ(?)を使っている。sortableは情報が多いので安心感がある。ドラッグアンドドロ…

ransackをindex以外のアクションで使う

簡単だった。 <%= search_form_for @search, url: "hogehoge" do |f| %> <div class="input-group"> <%= f.text_field :fuga_cont, class: "form-control" %> <span class="input-group-btn"> <%= f.submit "検索", class: "btn btn-primary" %> </span> </div> <% end %> こんな感じ。ransackのビューヘルパー、search_form_forで…

railsでgooglechartsを使う

Railsプロジェクトでグラフ描画ライブラリChartkickを使用する手順 - Qiita この記事が参考になった。てかそのままでイケた。

pry-byebug

新しくデバッグツールを導入する。 binding.pry

rails4/bootstrap-sassでglyphiconが表示されない場合の対応

@import "bootstrap-sprockets"; //これを追加すればOK!!

rails4.1本番環境でjsやcssが適用されなかったときの対処

いくつか原因があるがbootstrapの導入からハマった。以下、対処法。 ・bootstrapファイルをvendor/assets以下に手動で配置 ・app/assets/javascripts/application.js等にbootstrapを記述 ・config/application.rbにassets.precompile += *js *css等必要な拡…

unicornのプロセスID確認方法

本番反映を手動で行いたい。そこでプロセスIDを確認したい。 $ pgrep -f 'unicorn_rails master' こうすると 30142 と現在の稼働しているプロセスIDが確認出来る。 そこで再起動をする場合には $ kill 30142 でプロセスを止めてから $ bundle exec unicorn_r…

さくらでrails4.1続き

production環境でデプロイしたところ画面が真っ白だったのでunicornのログを調べたらどうやらsecrets.yml内でsecret_key_baseが関係ありそうだったのでググって解決。 http://easyramble.com/rails-secret-key-base-env.html http://stackoverflow.com/quest…

さくら(centOS6.4)環境にrailsをデプロイするための準備

以下、参考になった。 http://perl.no-tubo.net/2012/04/05/リモートサーバのgit環境を構築-git-pushでdeploy出来るように/ http://kanjuku-tomato.blogspot.jp/2013/02/centos-63railsnginxrailsunicornpostgres.html 概念としてgitの理解が足らずかなり苦…

railsでeachしたときにnomethoderrorが出た場合の対策

eachしたときに記述としては正しいのにNoMethodErrorが出るケースがあった。 例えばdate型のデータをstrftimeで書き直すときになぜか発生。 原因はeachしたレコードの当該フィールドの中でnullがあった。 data.date.strftime('%m/%d') data.date.strftime('%…

railsでajax処理をするときに役に立ったサイト

あとで更新予定。とりあえず忘れないうちに。 http://ginpen.com/2011/11/28/ajax-on-rails/

rails3.2 ajax 備忘録

rails3.2でのajax実装方法の備忘録。 - view側でviewヘルパーのremote:trueとjs.erbを使う form_forやlink_to等のviewヘルパーでremote:true。 controller側で用意したリンク先でjs.erbを手配しそこで処理を書く。 ※例えば("#hoge").html("<%= j(render 'fug…

rails3.2でkaminariを同一ページに複数使う

kaminariはrailsのgem。超便利でどうやらデファクトスタンダードらしい。 早速使ってみたけど自分としては珍しく特につまずくポイントはなかった。 注意点として同一ページに複数使う場合だけパラメータを分ける必要がある。 通常だと projects_controller.r…

railsでjsが2回評価されるときの対処法

個人的にハマっていたことの備忘録。railsでAjaxを実装したところ処理が2回評価されこれに1週間くらいハマった。 例えばdeleteをしようとすると You sure? => ハイハイ、シュアシュア。 You sure? => ファッ!? と、alertが2回表示される感じ。これだけなら…

indexでの個別編集

eachして個別に取り出したやつをajaxで更新したい、best_in_place的に。ということで調査中。誰か良い方法があれば教えて欲しいです。