2013年5月31日金曜日

Ruby on Railsで、環境変数取得

Ruby on Rails(3.2.13)で、環境変数取得です。

<% request.env.each do |item| %>
  <%= item %><br />
<% end %>
代表的な所では、

request.env["REMOTE_ADDR"]
request.env["HTTP_USER_AGENT"]
request.env["HTTP_REFERER"]

といった具合でしょうか。



参考サイト
rails request.env 一覧(かゆいところに手が届くさん)
Ruby on Rails - request.env['HTTP_REFERER'] returns nil(Stack Overflow)

2013年5月30日木曜日

Ruby on Railsで、「to_param」を利用したSEOフレンドリーなURL

Ruby on Rails(3.2.13)で、「to_param」を利用したSEOフレンドリーなURLです。モデルにちょっとした細工を施すだけで実現できてしまいます。日本語だと威力を発揮出来ませんが、管理が非常に楽。美しすぎて、涙が出そうです。Railsって、すばらしい。

/app/models/news.rb
class News < ActiveRecord::Base
  def to_param
    "#{id}-#{title.parameterize}"
  end
end
実際に設定してみたサイトがこちら



参考サイト
Railsで、URLにIDでなく名前を入力して、アクセスする方法(Qiita [キータ])
Easily Override Ruby on Rails to_param for SEO Friendlier Resources(Starving Developerさん)
parameterize(APIドキュメント)

2013年5月29日水曜日

Ruby on Railsで、RSSフィード

Ruby on Rails(3.2.13)で、RSSフィードです。:layout => falseに指定して、RSSフォーマットで出力するようにすればOKです。viewsではRSSフォーマットを全て面倒見てくれます。

/app/controllers/news_controller.rb
def feed
  @news = News.order("created_at DESC")

  respond_to do |format|
    format.rss { render :layout => false }
  end
end
/app/views/news/feed.rss.builder
xml.instruct! :xml, :version => "1.0" 
xml.rss :version => "2.0" do
  xml.channel do
    xml.title "実験サイト、延々"
    xml.description "新着お知らせです。"
    xml.link news_index_url

    for news in @news
      xml.item do
        xml.title news.title
        xml.description news.detail
        xml.pubDate news.created_at.to_s(:rfc822)
        xml.link news_url(news)
        xml.guid news_url(news)
      end
    end
  end
end
実際に設定してみたサイトがこちら



参考サイト
railsでrssフィードを作る(うんたらかんたらRubyさん)
How do I make an RSS/Atom feed in Rails 3?(Stack Overflow)

2013年5月28日火曜日

Ruby on Railsで、ひらがな、カタカナの入力チェック

Ruby on Rails(3.2.13)で、ひらがな、カタカナの入力チェックです。良い感じでチェックできているような気がします。

/app/models/user.rb
class User < ActiveRecord::Base
  validates :hiragananame, :format => {:with => /^[\p{hiragana}ー-]+$/, :message =>'はひらがなで入力して下さい。'}
  validates :katakananame, :format => {:with => /^[\p{katakana}ー-]+$/, :message =>'はカタカナで入力して下さい。'}
end
実際に設定してみたサイトがこちら



参考サイト
Ruby1.9でひらがなやカタカナにマッチする正規表現(Qiita [キータ])

2013年5月27日月曜日

Ruby on Railsで、ページ固有のJavaScriptファイルの読み込み

Ruby on Rails(3.2.13)で、ページ固有のJavaScriptファイルの読み込みです。application.jsは、全てのページで読み込まれますが、ページ別に読み込むスクリプトを変えたい場合などに使えます。javascript_includesが、該当部分です。

/app/views/layouts/application.html.erb
<%= javascript_include_tag "application" %>
<%= yield :javascript_includes %>
/app/views/inquiries/new.html.erb
<% content_for :javascript_includes do %>
  <%= javascript_include_tag "sample.js" %>
<% end %>


実際に設定してみたサイトがこちら

参考サイト
JavaScript file per view in Rails(Stack Overflow)

2013年5月26日日曜日

窓掃除ロボット「Winbot Series 7」

窓掃除ロボット「Winbot Series 7」、床を勝手に這いまわって掃除してくれるロボットの窓版です。どうやって張り付いているのか興味をそそられます。こういったロボットが出現してくると、ゴンドラに乗って掃除してくれる作業員も、「昔見た光景」になってしまうのかもしれません。



2013年5月25日土曜日

Ruby on Railsで、画像の表示(Heroku + Cloudinary)

Ruby on Rails(3.2.13)で、画像の表示です。前回の続きで、サーバー環境は、Heroku + Cloudinaryです。Herokuでは、サーバー内に画像ファイルなどを保存出来ませんが、Cloudinaryは、クラウド上に画像を保存、管理できるサービスで、たいへん便利。ありがたい限りです。

Cloudinary 無料のStarterコースの場合
画像 25,000枚
1月の転送量 1000MB
容量 500MB
データベース内、pic列に保存されているデータ。
{
"public_id"=>"abcdefg", 
"version"=>12345678, 
"signature"=>"aabbccddeeffgghhiijjkkllmmnn", 
"width"=>600, 
"height"=>900, 
"format"=>"jpg", 
"resource_type"=>"image", 
"created_at"=>"2013-05-24", 
"bytes"=>103201, 
"type"=>"upload", 
"url"=>"http://res.cloudinary.com/hphzcrsud/image/upload/v12345678/abcdefg.jpg", 
"secure_url"=>"https://cloudinary-a.akamaihd.net/hphzcrsud/image/upload/v12345678/abcdefg.jpg"
}
これを取り出して、表示です。パラメーターの指定を変えることで、サイズや向き、エフェクトを掛けたりと、思い通りの画像を得ることができます。詳しい設定項目はこちら。Photoshopとまでは言いませんが、必要十分な編集機能を備えています。人物の顔の部分を特定することなど(:gravity => :face)も可能です。

/app/views/users/show.html.erb
<%= cl_image_tag(@pic["public_id"] + "." + @pic["format"], 
:width => 180, 
:height => 180, 
:crop => :fill, 
:gravity => :face, 
:alt => "プロフィール写真") %>
実際に設定してみたサイトがこちら

2013年5月24日金曜日

Ruby on Railsで、画像のアップロード(Heroku + Cloudinary)

Ruby on Rails(3.2.13)で、画像のアップロードです。Heroku + Cloudinaryのサーバー環境。Cloudinaryは、クラウド上に画像を保存し、編集できるサービスです。

cloudinaryのインストール
gem install cloudinary
Gemfile
gem 'cloudinary'
CLOUDINARY_URLの環境設定
heroku config:add CLOUDINARY_URL=cloudinary://(API Key):(API Secret)@(Cloud name)
/config/initializers/cloudinary.rb(念のため、initializerにも)
Cloudinary.config do |config|
  config.cloud_name = '(Cloud name)'
  config.api_key = '(API Key)'
  config.api_secret = '(API Secret)'
  config.cdn_subdomain = true
end
/app/models/user.rb(文字列に変換して保存)
def pic=(value)
  if value.present?
    write_attribute(:pic, value.to_s)
  end
end
/app/controllers/users_controller.rb
def uploadpic
  @user = User.find(session[:user_id])
  unless params[:user].nil?
    @user.pic = Cloudinary::Uploader.upload(params[:user][:pic])
    if @user.save
      flash[:notice] = '登録されました。'
      redirect_to :action => 'uploadpic'
    else
      flash[:alert] = '登録できませんでした。'
      render :action => 'uploadpic'
    end
  end
end
データベースに保存されるデータ。カラムタイプは、TEXT型。
{
"public_id"=>"abcdefg", 
"version"=>12345678, 
"signature"=>"aabbccddeeffgghhiijjkkllmmnn", 
"width"=>600, 
"height"=>900, 
"format"=>"jpg", 
"resource_type"=>"image", 
"created_at"=>"2013-05-24", 
"bytes"=>103201, 
"type"=>"upload", 
"url"=>"http://res.cloudinary.com/hphzcrsud/image/upload/v12345678/abcdefg.jpg", 
"secure_url"=>"https://cloudinary-a.akamaihd.net/hphzcrsud/image/upload/v12345678/abcdefg.jpg"
}
実際に設定してみたサイトがこちら

2013年5月23日木曜日

Ruby on Railsで、数字の入力チェック

Ruby on Rails(3.2.13)で、数字の入力チェックです。greater_than_or_equal_toless_than_or_equal_toが用意されているのは、ありがたい。

greater_than
greater_than_or_equal_to
equal_to
less_than
less_than_or_equal_to
odd
even
/app/models/user.rb
class User < ActiveRecord::Base
  validates :age, :presence => true, :numericality => { :greater_than_or_equal_to => 18, :less_than_or_equal_to => 100, :only_integer => true }
end
実際に設定してみたサイトがこちら


2013年5月22日水曜日

Ruby on Railsで、Active Recordからデータをランダムに取得

Ruby on Rails(3.2.13)で、Active Recordからデータをランダムに取得する例です。2つの例ともに、ランダムにデータを取得出来ます。上の例は汎用的、下の例はMySQL限定。データが多い場合は、scopeなどで、ある程度、範囲を絞ってから利用した方が良いかもしれません。

@news = News.all.sample(5)
@news = News.order("RAND()").first(5)
実際に設定してみたサイトがこちら



参考サイト
ActiveRecord にてランダムなレコードが欲しい時(yukku++さん)
Rails 3: Get Random Record(Stack Overflow)

2013年5月21日火曜日

Ruby on Railsで、日付の前後入力チェック

Ruby on Rails(3.2.13)で、日付の前後入力チェックです。datetime型に設定されていると、単純に不等号で比較できるようです。同じ要領で、数字の大小などをチェックする場合にも利用できます。

/app/models/news.rb
class News < ActiveRecord::Base
  validates :start, :presence => true
  validates :end, :presence => true
  validate :start_end_check

  def start_end_check
    errors.add(:end, "の日付を正しく記入して下さい。") unless
    self.start < self.end
  end 
end
実際に設定してみたサイトがこちら

参考サイト
Rails validation method comparing two fields?(Stack Overflow)

2013年5月20日月曜日

Ruby on Railsで、ベーシック認証

Ruby on Rails(3.2.13)で、ベーシック認証です。before_filterで設定すると、サイト全体に設定する場合などに便利です。

/app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  before_filter :admin_basic_authenticate

  def admin_basic_authenticate
    authenticate_or_request_with_http_basic do |username, password|
      username == "username1234" && password == "password1234"
    end
  end
end


参考サイト
Railsで作る認証機能~basic認証(Geekzさん)
Rails3でBasic認証する方法(森薫の日記さん)
Basic Authentication for a rails API(Stack Overflow)

2013年5月19日日曜日

レスポンシブデザインに対応したjQueryのスライドショープラグイン「Cycle2」

レスポンシブデザインに対応したjQueryのスライドショープラグイン「Cycle2」を試してみました。設定項目が多岐にわたっていて、高機能でありながらも、それをひけらかさないシンプルさが良いです。しかも、設定内容をdivタグ内で指定するという徹底ぶり。直感的で、扱いやすいです。

<div class="cycle-slideshow"
    data-cycle-fx="scrollHorz"
    data-cycle-pause-on-hover="true"
    data-cycle-speed="200"
    >
    <img src="http://malsup.github.com/images/p1.jpg">
    <img src="http://malsup.github.com/images/p2.jpg">
    <img src="http://malsup.github.com/images/p3.jpg">
    <img src="http://malsup.github.com/images/p4.jpg">
</div>

2013年5月18日土曜日

新潟県観光協会が公式観光情報ウェブサイトのシステム開発者を募集中、予算は2800万円!!

新潟県観光協会公式観光情報ウェブサイトのシステム開発者を募集中、予算は2800万円です!! もちろん、予算に見合った中身は要求されるでしょうが、やりがいのある仕事になることは間違いなし。仕様書を覗いてみましたが、現行コンテンツの移行に加え、モバイルサイト、スマホサイトも準備する必要があるようです。新潟を愛する熱い心の持ち主の方、是非、参戦してみて下さい。

2013年5月17日金曜日

Ruby on Railsで、ヘッダーのタイトル表示

Ruby on Rails(3.2.13)で、ヘッダーのタイトル表示です。RailsCastsで紹介されていましたので、設定してみました。viewsのerbファイル内で設定できるようになるので、見通しが良くなります。

/app/helpers/application_helper.rb
module ApplicationHelper
  def title(page_title)
    content_for(:title) { page_title }
  end
end
/app/views/layouts/application.html.erb
<% if yield(:title).present? %>
  <title><%= yield(:title) %> - サイト名</title>
<% else %>
  <title>サイト名</title>
<% end %>
/app/views/news/index.html.erb
<% title "お知らせ一覧" %>
実際に設定してみたサイトがこちら

2013年5月16日木曜日

Ruby on Railsで、カラムデータのソート(降順、昇順)

Ruby on Rails(3.2.13)で、カラムデータのソート(降順、昇順)です。RailsCastsにサンプルが紹介されていましたので、設定してみました。sort_columnの部分で、どのカラムでソートするのか設定しているわけですが、Model.column_names.include? で、カラム名が存在するかチェックしているところなどは、心憎いです。製品向けには、ソートできるカラムに制限を加えるべきでしょうが、エレガントすぎます。

/app/controllers/news_controller.rb
class NewsController < ApplicationController
  helper_method :sort_column, :sort_direction

  def index
    @news = News.order(sort_column + " " + sort_direction)
  end

  private
  
  def sort_column
    News.column_names.include?(params[:sort]) ? params[:sort] : "id"
  end
  
  def sort_direction
    %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
  end
end
実際に設定してみたサイトがこちら

2013年5月15日水曜日

Ruby on Railsで、errors.full_messagesのエラー表示を、入力項目につき、1件だけ表示

Ruby on Rails(3.2.13)で、で、errors.full_messagesのエラー表示を、入力項目につき、1件だけ表示するようにしてみました。full_messagesのままでも良いのですが、エラーメッセージが多く表示される場合があるので、対処しました。最初、参考サイトのStack Overflowに紹介されているErrorsHelperをモジュールとして組み込んではみたものの、うまく利用できずに挫折。しかたがないので、力技で解決しました。スマートじゃありませんが、viewsの変更のみでいけます。何とか動いているでしょう。

/app/views/inquiries/new.html.erb
<% @inquiry.errors.full_messages.each do |msg| %>
  <p class="error message"><%= msg %></p>
<% end %>

お名前を入力してください。
お名前は2文字以上で入力してください。
メールアドレスを入力してください。
メールアドレスは不正な値です。
件名を入力してください。
件名は2文字以上で入力してください。
本文を入力してください。
本文は10文字以上で入力してください。


/app/views/inquiries/new.html.erb
<% inquiry_errors = @inquiry.errors.map { |attr, msg| [attr, @inquiry.errors.full_message(attr, msg)] } %>
<% tmpattr = "" %>
<% inquiry_errors.each do |attr, msg| %>
  <% if tmpattr != attr %>
  <p class="error message"><%= "#{msg}" %></p>
  <% tmpattr = attr %>
  <% end %>
<% end %>

お名前を入力してください。
メールアドレスを入力してください。
件名を入力してください。
本文を入力してください。
実際に設定してみたサイトがこちら

参考サイト
Rails validation error messages: Displaying only one error message per field(Stack Overflow)

2013年5月14日火曜日

Ruby on Railsで、Scopeを用いた検索

Ruby on Rails(3.2.13)で、Scopeを用いた検索です。これが非常に便利。直感的で、見た目にもわかりやすい。Scopeを複数つないで利用することも可能。ちなみに下記のモデル、news.rb内の「lambda」は、匿名関数(anonymous functions)だそうです。よくわからないけど、こういうものだと思って利用することにします。

/app/models/news.rb
class News < ActiveRecord::Base
  scope :published, where(:published => true)
  scope :search_keyword, lambda { |q| where("title LIKE ? OR comment LIKE ?", "%#{q}%", "%#{q}%") }
end
/app/controllers/posts_controller.rb
class NewsController < ApplicationController
  def index
    news = News.published
    news = News.published.search_keyword(params[:q])
  end
end
実際に設定してみたサイトがこちら



参考サイト
rails-scope(mindia(マインディア)さん)
【Ruby】lambdaって何?(ふわふわRuby on Railsさん)
[Ruby]Rubyのblock、Proc、lambdaを理解する(このブログは証明できない。さん)

2013年5月13日月曜日

Ruby on Railsで、共通モジュール

Ruby on Rails(3.2.13)で、共通モジュールです。頻繁に利用する共通機能は、まとめておくと便利です。作成したモジュールをlibフォルダの中に設置し、application.rbでモジュールの読み込みパスを指定すると、「include (モジュール名)」で読み込めるようになります。

/config/application.rb
config.autoload_paths += %W(#{config.root}/lib)
/lib/my_module.rb(モジュールの定義)
module MyModule
  def sample_module_method(something)
    ここに処理を記述
  end
end
/app/controllers/users_controller.rb(モジュールの読み込み)
class UsersController < ApplicationController
  include MyModule
  def index
    sample = sample_module_method(something)
  end
end
実際に設定してみたサイトがこちら



参考サイト
Rails 3.1で「/lib/assets」に設置した共通モジュールの使い方(Qiita [キータ])
How to create and use a module using Ruby on Rails 3?(Stack Overflow)

2013年5月12日日曜日

YouTubeの視覚マジックチャンネル「brusspup」

YouTubeの視覚マジックチャンネル「brusspup」 視覚の錯覚を利用したもので、頭の体操に非常に良いです。特に下のルービックキューブのビデオは、驚愕です。絶対に騙されます。はじめは何を意図している映像なのかよくわかりませんでしたが、その後、驚きと感動に変わります。素晴らしい。



2013年5月11日土曜日

Ruby on RailsのAsset Pipelineにハマる

Ruby on Rails(3.2.13)で、Asset Pipelineにハマりました。JavaScriptが原因で、ブラウザが固まってしまう現象に見舞われたのですが、原因の切り分けができません。Asset PipelineによりまとめられたJavaScriptを個別に分解して、ようやく原因究明に至りました。設定ファイルのdevelopment.rb内、config.assets.debugを変更することで、まとまったJavaScriptを個別に表示することができます。だいぶ時間が取られましたが、Asset Pipelineを理解する良い機会になりました。

/config/environments/development.rb
# Expands the lines which load the assets
config.assets.debug = false
↓
config.assets.debug = true
出力されるHTMLは、こんな感じ。
<script src="/assets/application.js" type="text/javascript"></script>
↓
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/inquiries.js?body=1" type="text/javascript"></script>
<script src="/assets/news.js?body=1" type="text/javascript"></script>
<script src="/assets/top.js?body=1" type="text/javascript"></script>
<script src="/assets/users.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>


参考サイト
Assets Pipeline(web-k.logさん)
Asset Pipelineを理解する(ASCIIcastsさん)
Rails 3.2 の development 環境で javascript が二重に実行されてしまうときの対処方法(彼女からは、おいちゃんと呼ばれていますさん)

2013年5月10日金曜日

Ruby on Railsで、ページネーション(ページ送り)「kaminari」

Ruby on Rails(3.2.13)で、ページネーション(ページ送り)です。Gemパッケージのkaminariを設定してみました。Githubのドキュメントと、memo.yomukaku.netさんの解説を参考に、何とか設定できました。デザインもカスタマイズし、なかなか良い感じです。プログラムソースもスッキリしていて、実にエレガント。

実際に設定してみたサイトがこちら



参考サイト
Kaminariの使い方 Rails3時代のpaginationの標準候補(memo.yomukaku.netさん)

2013年5月9日木曜日

Ruby on RailsのRakeコマンド

Ruby on Rails(3.2.13)のRakeコマンドです。rake db:migrateで、「rake aborted! An error has occurred, all later migrations canceled」とエラー表示され、行き詰まってしまったので、どうしたものかと思案していました。rake db:schema:dumpして、rake db:schema:dump rake db:schema:loadとやれば、初期化されそうな気もしましたが、度胸がなくて、できませんでした(笑)。その後、エラー表示されなくなったので、またの機会に試すことにします。

rake db:schema:dump
rake db:schema:load
rake -T
rake about              
# List versions of all Rails frameworks and the environment
rake assets:clean       
# Remove compiled assets
rake assets:precompile  
# Compile all the assets named in config.assets.precompile
rake db:create          
# Create the database from DATABASE_URL or config/database.yml for the current Rails.env (u...
rake db:drop            
# Drops the database using DATABASE_URL or the current Rails.env (use db:drop:all to drop a...
rake db:fixtures:load   
# Load fixtures into the current environment's database.
rake db:migrate         
# Migrate the database (options: VERSION=x, VERBOSE=false).
rake db:migrate:status  
# Display status of migrations
rake db:rollback        
# Rolls the schema back to the previous version (specify steps w/ STEP=n).
rake db:schema:dump     
# Create a db/schema.rb file that can be portably used against any DB supported by AR
rake db:schema:load     
# Load a schema.rb file into the database
rake db:seed            
# Load the seed data from db/seeds.rb
rake db:setup           
# Create the database, load the schema, and initialize with the seed data (use db:reset to ...
rake db:structure:dump  
# Dump the database structure to db/structure.sql. Specify another file with DB_STRUCTURE=d...
rake db:version         
# Retrieves the current schema version number
rake doc:app            
# Generate docs for the app -- also available doc:rails, doc:guides, doc:plugins (options: ...
rake log:clear          
# Truncates all *.log files in log/ to zero bytes
rake middleware         
# Prints out your Rack middleware stack
rake notes              
# Enumerate all annotations (use notes:optimize, :fixme, :todo for focus)
rake notes:custom       
# Enumerate a custom annotation, specify with ANNOTATION=CUSTOM
rake rails:template     
# Applies the template supplied by LOCATION=(/path/to/template) or URL
rake rails:update       
# Update configs and some other initially generated files (or use just update:configs, upda...
rake routes             
# Print out all defined routes in match order, with names.
rake secret             
# Generate a cryptographically secure secret key (this is typically used to generate a secr...
rake stats              
# Report code statistics (KLOCs, etc) from the application
rake test               
# Runs test:units, test:functionals, test:integration together (also available: test:benchm...
rake test:recent        
# Run tests for {:recent=>"test:prepare"} / Test recent changes
rake test:single        
# Run tests for {:single=>"test:prepare"}
rake test:uncommitted   
# Run tests for {:uncommitted=>"test:prepare"} / Test changes since last checkin (only Subv...
rake time:zones:all     
# Displays all time zones, also available: time:zones:us, time:zones:local -- filter with O...
rake tmp:clear          
# Clear session, cache, and socket files from tmp/ (narrow w/ tmp:sessions:clear, tmp:cache...
rake tmp:create         
# Creates tmp directories for sessions, cache, sockets, and pids


参考サイト
DBをリセットするrakeタスク二つ(maeshimaの日記さん)
rake db:schema:dump してみた(あーありがちさん)

2013年5月8日水曜日

Ruby on Railsで、複数チェックボックス

Ruby on Rails(3.2.13)で、複数チェックボックスです。何とか動くようになったというレベルです。話半分に参考にして下さい。下の例は、ユーザーの趣味を複数登録する場合のサンプルです。

HTMLは、変数名が「user[hobby[1]]」と配列形式になっていて、引き渡ってくるデータは、「hobby=>{"1"=>"1", "2"=>"2", "3"=>"3"}」と、こんな感じになっています。モデル(user.rb)で、データを整形して、データベースには「;1;2;3;」という具合にデータを保存しています。

HTML
<input checked="checked" id="user_hobby[1]" name="user[hobby[1]]" type="checkbox" value="1" />DIY
<input id="user_hobby[2]" name="user[hobby[2]]" type="checkbox" value="2" />アウトドア
<input checked="checked" id="user_hobby[3]" name="user[hobby[3]]" type="checkbox" value="3" />スポーツ
送信されるデータ
hobby=>{"1"=>"1", "2"=>"2", "3"=>"3"}
/app/models/user.rb
attr_accessor :hobby

def hobby=(value)
  str = ''
  value.each do |key, val| 
    str += key.to_s + ';'
  end
  if str
    str = ';' + str
  end
  write_attribute(:hobby, str)
end

def hobby
  read_attribute(:hobby)
end
/app/views/users/edit.html.erb
<% 
if @user.hobby
  achecked = @user.hobby.split(';') 
else
  achecked = []
end
ARRAY_HOBBY.each do |key, value|
  if achecked.include?(key)
    checkedval = true
  else 
    checkedval = false
  end
  %>
  <%= f.check_box 'hobby[' + key.to_s + ']', options = {:checked => checkedval}, checked_value = key.to_s, unchecked_value = nil %>
  <%= value %>
  <%
end
%>
実際に設定してみたサイトがこちら



参考サイト
Rails 擬似配列型カラムと複数選択チェックボックス(130単位さん)

2013年5月7日火曜日

Ruby on Railsで、セレクトボックスとラジオボタン

Ruby on Rails(3.2.13)で、セレクトボックスラジオボタンです。ドキュメントを読めば、設定項目は推測出来ます。本来は、チェックボックスも試してみたかったのですが、見事に挫折。複数のデータを指定するチェックボックスは、データの受け取り方がわからない。長い道のりになりそう。

セレクトボックス
<%= f.select(:area, options_for_select((配列), @user.area)) %>
ラジオボタン
<%= f.radio_button :gender, 1 %>
<%= f.radio_button :gender, 2 %>
実際に設定してみたサイトがこちら

2013年5月6日月曜日

癒し系のバックグラウンドミュージックを提供してくれる「soundrown.com」

癒し系のバックグラウンドミュージックを提供してくれる「soundrown.com」、列車の枕木を越える音や、喫茶店の店内、海岸のさざなみなど、心地良い音源をエンドレスで楽しむことができます。静かな状態よりも集中できるかもしれません。疲れのたまっている方、是非どうぞ。

2013年5月5日日曜日

LGの湾曲する55インチ有機ELテレビ

LGの湾曲する55インチ有機ELテレビが発表されています。この大きさのモニタが折れ曲がる必要性は感じませんが、この発色の良さは、さすが有機ELテレビ。しかもこの薄さで、デザイン性も文句なし。リビングに置いたら、この上ない満足感に浸れること間違いなし。欲しい(笑)。



2013年5月4日土曜日

VirtualBoxのイメージファイルをダウンロードできる「virtualboximages.com」

VirtualBoxのイメージファイルをダウンロードできる「virtualboximages.com」 わざわざ、OSをインストールする手間が要らないので、ちょっと試してみるには。非常にありがたいサービスです。イメージファイルは、頻繁に新しいものがアップされていますので、メジャーなOSであれば、すぐに目的のものが見つかると思います。

2013年5月3日金曜日

15GB無料のストレージサービス「4sync」

15GB無料のストレージサービス「4sync」を利用してみました。ウェブからすべての操作が可能で、アップロードしたファイルは、ファイル形式ごとに見やすく表示してくれるので、管理が容易です。例えば、写真や動画は、サムネイル表示してくれて、一目でどのファイルなのか判別可能。しかも動画は、その場で再生してくれます。回線スピードも速いので、大きなファイルでもストレスなく利用できます。素晴らしい。

2013年5月2日木曜日

Ruby on Railsのルーティング定義(routes.rb)

Ruby on Rails(3.2.13)ルーティング定義(routes.rb)です。rake routesコマンドで、/config/routes.rbに定義したルーティングを確認できます。特に、「:constraints」で、入力に制約をつけておくと、より安全に利用できると思います。

:constraints を使った例
photos/:id' => 'photos#show', :constraints => { :id => /\d{5-10}/ }


参考サイト
Rails Routing from the Outside In(Ruby on Rails Guides)

2013年5月1日水曜日

Ruby on Railsのカスタムバリデーション(validate)

Ruby on Rails(3.2.13)validateです。モデルで、カスタムのバリデーションを設定する場合がvalidateで、既存の入力チェックを行う場合は、validatesを利用するらしい。下の例は、メールアドレスの入力チェックです。

/app/models/user.rb
validate :check_email

def check_email
  if email.present?
    errors.add(:email, :invalid) unless email =~ /([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
  end
end
実際に設定してみたサイトがこちら