「Ruby」 カテゴリの記事一覧

railsで特定ページ用「いいね!」ボタンを表示する

2013年05月06日 22時33分

railsで特定のページ用に「いいね!」ボタンを表示する方法。

 

2つのパーシャルテンプレート(_fb_root.html.erbと_fb_like.html.erb)を作成し、_fb_root.html.erbはapplication.html.hamlなどのテンプレートから、_fb_like.html.erbは「いいね!」ボタンを表示したい特定のテンプレートからrenderすることで「いいね!」ボタンが表示されるようになる。

 

like_button

 

「いいね!」ボタンの表示を他の形式にしたい場合は、facebook developers Like ButtonからテンプレートのHTMLコードを作成できる。

Railsでstaging環境だけBasic認証する

2013年05月06日 17時48分

http_basic_authenticate_withメソッドを使えばいいらしい。

 

production環境にBasic認証をかけたいのなら

だし

全ての環境にBasic認証をかけたいのなら

でよい。

 

また、ApplicationControllerクラスではなく特定のコントローラでhttp_basic_authenticate_withを呼びだせば、そのコントローラのみにBasic認証がかかる。

さらに、exceptオプションやonlyオプションをつけると、任意のアクションのみがBasic認証の対象になる。

 

こんな感じでroutes.rbっぽく。(このサンプルは実際に動かして試していないまま書いていたりする)

railsでCSSをコントローラごとに分けて管理する

2013年04月30日 12時11分

Railsでは、スタイルシートはapp/assets/stylesheetsフォルダ以下に、application.css.scssやposts.css.scssなどコントローラごとにスタイルファイルを作成して記述するのが習慣だ。

しかし、ページを表示したときに全てのスタイルシートがビルドされてしまうため、気をつけないと例えばPostsControllerに属するページ用のスタイルをposts.css.scssで記述したけどPeopleControllerに属するページにまで意図せず影響してしまった、ということになってしまう。

これを直感的に回避するため、現在表示しているページの内容は、コントローラ名のidがついたdivタグで囲うことにした。

 

これで、直感的に、各コントローラごとが互いに悪影響を及ぼすことがないスタイルを記述できるようになった。

railsの.css.scssでimage_pathを使う

2013年04月23日 23時09分

こう書けば、image_pathやimage_urlは

rubyのActionView::Helpers::AssetTagHelper.image_path

などを直接呼び出したのと同じように振る舞ってくれるらしい。

(「らしい」というか、実際に使わせてもらって、ちゃんと動いたわけではあるが、公式なドキュメントを見つけられなかったので、そういった場合はこのブログの方針としては「らしい」扱いとする。それもその日の気分によって変わったりするけど・・)

 

上記のサンプルコードはまんまこちらから拝借。

ググると、わざわざviewフォルダの下にスタイルシート記述しそれをレイアウトで読み込ませるようなことをしているが、今回紹介したことを知らなければ、そりゃそうなるよなっと。

rubyで配列のn番目から最後までの要素を取り出す

2013年04月20日 18時23分

こんな書き方ができたのか〜

[1, 2, 3, 4, 5, 6]という配列から、インデックス2〜末尾までの範囲要素を取得できたよ〜ということに意義がある。

 

ユニットテストを書くときに、配列の1番目と2番目くらいのチェックはするけど、それ以降のチェックはテキトーにループでしたい場合に結構重宝しそう。

 

ちなみに、この書き方は、Arrayクラスのself[range]と、self[nth]に負の数を指定すると末尾からのカウントになるという特性を利用していたりする。

class Array