カテゴリー : Ruby on Rails

[Rails] コントローラの中で View の画像URLを取得する方法

 

Ruby on Railsにて、コントローラの中で View のントローラの中で、ビューの image_path などを取得したいときは view_context を使えばできるみたいです。
 

■ コントローラの例
 

1
2
3
4
5
6
7
8
#-*- encoding: utf-8 -*-
 
class BookController < ApplicationController
  def show
    view_context.image_path('book.jpg')
      # => "http://localhost:3000/images/book.jpg"
  end
end

 

■ application.rb
 

1
2
3
4
5
6
module MyApp
  class Application < Rails::Application
    config.action_controller.asset_host = "http://localhost:3000"
    ...(略)...
  end
end

 

以上です。
 

【参考】

Rails のコントローラの中で View の画像URLを取得する方法 – それはBlog はてなブックマーク - Rails のコントローラの中で View の画像URLを取得する方法 - それはBlog
 

[Rails] redirect_to でリダイレクトできない原因はURLに半角スペースが入っていたせい

 

Railsのメソッド redirect_to で、Facebook認証後のリダイレクト処理をさせていたのですが、ちゃんと動かなくて困っていました。
 

リダイレクトできなかった原因はなんと、URLに半角スペースが入っていたせいでした…
 

1
2
redirect_to @facebook_cookies.url_for_oauth_code(:permissions => "publish_stream, read_stream")
#redirect_to 'https://graph.facebook.com/oauth/authorize?client_id=125635350871368&redirect_uri=http://localhost:3000/&scope=publish_stream, read_stream'

 

“publish_stream, read_stream” の部分の半角スペースが入っていたせいでリダイレクトできていなかったみたいです。
 

文字列で渡すところをうっかり配列で渡すような書き方にしてしまっていました…
 

正しくは以下のように、スペースを入れないで scope に渡すパーミッションを指定します。
 

1
2
redirect_to @facebook_cookies.url_for_oauth_code(:permissions => "publish_stream,read_stream")
#redirect_to 'https://graph.facebook.com/oauth/authorize?client_id=125635350871368&redirect_uri=http://localhost:3000/&scope=publish_stream,read_stream'

 

ちなみに、Facebook API を使うためのライブラリは koalaを使っています。
 

arsduo/koala – GitHub はてなブックマーク - arsduo/koala - GitHub
 

以上です。
 

Rails 3 で root(ルート)を route.rb から変更する方法

 

Rails 3 にて、root(ルート)を route.rb から変更する方法を調べたのでメモ。
 
 

■ root
 

Webアプリのroot「/」に対するrouteは、Rails 3ではrootというディレクティブを使うそうです。
 

例えば、homeControllerのshowアクションをrootにする場合は config/routes.rb に以下のように書くそうです。
 

1
root :to => 'home#show'

 

これだけではまだ、デフォルトページが表示されてしまうので public/index.html をリネーム or 削除すれば、root で任意のページを表示できます。
 

1
$ rm public/index.html

 

ちなみに、Rails3のroutesについては以下の記事に詳しくまとめられています。
 

Rails 3のroutesまとめ はてなブックマーク - Rails 3のroutesまとめ
 

以上です。
 

【参考】

rails2.0でデフォルトのrouteを変更する方法 – Cafe L@ Bebop はてなブックマーク - rails2.0でデフォルトのrouteを変更する方法 - Cafe L@ Bebop
 

[Rails] rake db:migrate コマンドで rake aborted! no such file to load — pg のエラー問題を解決

Railsにて、rake db:migrate コマンドがエラーで実行できない問題を解決したのでメモ。

$ rake db:migrate
rake aborted!
no such file to load -- pg
 
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

アプリケーションルート直下の Gemfile ファイルにて、SQLite3 を使う記述が初期設定のままだったので、これをpostgresqlを使うように書き換えればOKです。

$ vim Gemfile

■ Gemfileから一部抜粋

#Comment out the sqlite3 requirement
#gem 'sqlite3-ruby', :require => 'sqlite3'
#Add a pg requirement
gem 'pg', :require => 'pg'

以上です。

【参考】

Ruby/Rails 3 and PostgreSQL | Peter Mac And Associates はてなブックマーク - Ruby/Rails 3 and PostgreSQL | Peter Mac And Associates

RailsからPostgreSQLに繋がらない~ – Stellaqua – TOMの技術日記 はてなブックマーク - RailsからPostgreSQLに繋がらない~ - Stellaqua - TOMの技術日記
 

Mac に Ruby on Rails の開発環境を構築する手順 [Ruby 1.8.7]

MacOS に Ruby 1.8.7 で Ruby on Rails の開発環境を構築する手順をご紹介します。

Ruby on Rails

続きを読む