FrontPage  Index  Search  Changes  Login

rails

命名規則

model

単数形

User

controller

複数形 + Controller

UsersController

コントローラ名の取得

contoller_name

generateor

model generator

railg g user id:integer name:string

scaffold generator

railg g scaffold user id:integer name:string

定義済みの model がありマイグレーションファイルは作成しない(マイグレーションしない)場合

rails g scaffold user id:integer name:string --migration=false

フィールドも指定する。ここで指定されたフィールドが、_form.html.erb に追加される。

controller generator

rails g controller users

migration

rake db:migrate

gem ファイルの require

config/application.rb に記述

# If you have a Gemfile, require the gems listed there, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env) if defined?(Bundler)
# rails console で読み込んでくれないので定義
require 'authentication'
require 'authentication/by_password'
require 'authentication/by_cookie_token'

レイアウト

  • application.erb
<html>
<head>
  <title>books</title>
</head>
<body>
<%= yield %>
</body>
</html>

@content_for_layout は非推奨

Even the old @content_for_layout in the layout is deprecated in favor of just using yield in its place.
Use params, not @params

リダイレクト

別のコントローラへ

redirect_to :controller => "welcome"

url_for を使う

redirect_to url_for :controller => "welcome"

フォーム

<% form_tag('/welcome/login') do -%>
  <%= text_field(:login, :name, :size => 20) %><br>
  <%= password_field(:login, :password, :size => 20) %><br>
  <%= submit_tag :search %>
<% end -%>

jquery

Gemfile

gem 'jquery-rails', '>= 0.2.6'

cmd

bundle install
rails g jquery:install

model

model の変更前の状態(値)を取得する

model.changed?  変更されてるかどうか。
model.changed   変更されているattribute名の配列。
model.changes   変更されているattribute名前と値のハッシュ。値は変更前更後の値を配列で。
model.attr_changed?      attrが変更されているかどうか。
model.attr_was           attrの変更前の値。変更されてなかったら元の値。
model.attr_change        attrの変更前後の値の配列。変更されてなかったらnil。
model.attr_will_change!  attrを変更することを明示。
class User < ActiveRecord::Base
  def validate_on_update
      errors.add("Password", " is Wrong") if password_was != password
  end
end

theme

- http://pilu.github.com/web-app-theme/#themes/drastic-dark - https://github.com/pilu/web-app-theme

gem install web-app-theme
rails g web_app:theme --them=bec-green

validation

validates_acceptance_of :checked, :accept => '1'

  1. 規約同意の検証

validates_presence_of :name

  1. 値がある事を検証

validates_format_of :email, :with => /[^@]+@[^@\.]+\.[^@\.]+/

  1. 正規表現での検証

validates_associated :frend

  1. 関連するオブジェクトの検証結果が正しいか検証

validates_confirmation_of :password

  1. 確認入力のチェック用
  2. _confirmation というアクセサが自動生成される。

validates_each :password { |record, attr, value| //////////////code//////////// }

  1. コード部分を使って検証条件をかける。

validates_inclusion_of :type , :in=> %w(男性用 女性用)

  1. 指定された値の範囲内であることを確認する。

validates_exclusion_of :password :in => /^\d+$/, :message => '数字のみは危険です'

  1. 指定された値の範囲外であることを確認する。

validates_length_of :name, :maximum=> 30, :minimum => 3

  1. 文字数の検証

validates_numericality_of

  1. カラムが数値か検証

validates_uniqueness_of

  1. カラムがユニークか検証

タグの除去

require 'action_view'
include ActionView::Helpers::SanitizeHelper

puts strip_tags('<span>hello world</span>')

lib フォルダを読み込む

config/application.rb

config.autoload_paths += %W(#{config.root}/lib)

階層にあったフォルダに配置する必要がある

 A::B → lib/a/b.rb

サーバ

Gemfile に gem 'thin' を追加してコマンドを実行

 rails server thin
Last modified:2012/01/13 22:21:19
Keyword(s):
References:[FrontPage]