2013年3月10日日曜日
2013年2月24日日曜日
active support 便利関数 try
関連テーブルのフィールド情報を取りにいくとき、関連テーブルが無いとき例外が発生しますようね。
Image.all{|image|
image.book.title
}
関連するbookが無い場合例外が発生。今までは以下のようにしていました。
Image.all{|image|
image.book.title if image.book.present?
}
tryを使うと少ないコードですみます
Image.all{|image|
image.book.try(:title)
}
かなりいいです。感動!
param情報にもつかます。
paramのハッシュ:search の中の:locationNmaにアクセスするとき
params["search"]["locationName"] if params["search"].present?
tryを使うと
params["search"].try(:[],:locationName)
いい感じです。
Image.all{|image|
image.book.title
}
関連するbookが無い場合例外が発生。今までは以下のようにしていました。
Image.all{|image|
image.book.title if image.book.present?
}
tryを使うと少ないコードですみます
Image.all{|image|
image.book.try(:title)
}
かなりいいです。感動!
param情報にもつかます。
paramのハッシュ:search の中の:locationNmaにアクセスするとき
params["search"]["locationName"] if params["search"].present?
tryを使うと
params["search"].try(:[],:locationName)
いい感じです。
2013年2月17日日曜日
JQuery1.9ではまる
jQuery.browser(),.live() .die()が1.9から廃止されたんですね。
"ローカルではエラーも無く動作するのに、サーバーではjQuery関係のエラーが発生"この問題を解決するのに半日ほどかかりました
なかなか原因がつかめなかった理由はローカルのjQueryは1.8系でサーバーを1.9を使ってしまった為です。最初はjQueryを含めたライブラリのインストールが正しく出来ていないかも?からはじまりました。
長く辛い時間でした。
サーバーは最近インストールしたので、何も考えなく当然のように1.9.1を入れていました。最終的に解決方法はサーバーのjQueryのバージョンを1.8の最終にしました。
理由は廃止された関数を使っている部分のコードを変更するのは危険と判断したためです。
"ローカルではエラーも無く動作するのに、サーバーではjQuery関係のエラーが発生"この問題を解決するのに半日ほどかかりました
なかなか原因がつかめなかった理由はローカルのjQueryは1.8系でサーバーを1.9を使ってしまった為です。最初はjQueryを含めたライブラリのインストールが正しく出来ていないかも?からはじまりました。
長く辛い時間でした。
サーバーは最近インストールしたので、何も考えなく当然のように1.9.1を入れていました。最終的に解決方法はサーバーのjQueryのバージョンを1.8の最終にしました。
理由は廃止された関数を使っている部分のコードを変更するのは危険と判断したためです。
2013年2月10日日曜日
Homebrew(macのパッケージ管理) rbenv(rubyのバージョン管理) railsのインストール
私も遂にMacportとrvmにさよならして、Homebrewとrbenvをインストールしました
基本的にはここを参照しましたHomebrewのインストール
1.Xcodeのインストール
2.XcodeのCommandLineToolsのインストール(Xcode Preferences Downloads ConnamdLineTools
3.Homebrewのインストール
ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)4.MacPortsのアンインストール
sudo port -f uninstall installed5.macportの設定を削除
sudo rm -rf /opt/local /Applications/DarwinPorts /Applications/Macports /Library/LaunchDaemons/org.macports.* /Library/Receipts/DarwinPorts*.pkg /Library/Receipts/MacPorts*.pkg Library/StartupItems/DarwinPortsStartup /Library/Tcl/darwinports1.0 /Library/Tcl/macports1.0 ~/.macports6.環境変数の編集
削除
Macport関係の設定を削除
7.設定の再読み込み
source ~/.profile source ~/.bash_profileor
再ログイン
8.brew が正しくインストールされているかを確認
brew doctorここでのメッセージを元に悪いところを修正 rbenvのインストール
1.rvmが入っている場合は削除
rvm implode2.rbenv とruby-buildのインストール
brew install rbenv brew install ruby-build echo 'eval "$(rbenv init -)"' >> ~/.bash_profile source ~/.bash_profile3.readlineのインストール
brew install readline brew link readline4.opensslのインストール
brew install openssl brew link openssl5.rubyのインストール(CONFIGURE_OPTSを設定しないとインストール出来ない)
CONFIGURE_OPTS="--with-readline-dir=/usr/local --with-openssl-dir=/usr/local" rbenv install 1.9.3-p194 rbenv rehash rbenv global 1.9.3-p1946.バージョン確認(バージョンが出るか確認してください)
rbenv version ruby -v7.ruby on rails のインストール
rbenv exec gem install rails rbenv rehash source ~/.bash_profileその他 発生した問題と解決策
問題:bundle install で Gem::RemoteFetcher::FetchError になる
gem update --system
問題:rbenvでインストールするとbundleが入っていない?
gem install bundle でインストール
問題:ビルド時のエラー
以下からgccパッケージをダウンロードしてインストール
https://github.com/kennethreitz/osx-gcc-installer/downloads
問題:brew doctorでパス変更の要求
/etc/pathsを変更して対応
2013年2月9日土曜日
2013年2月3日日曜日
rails3 複数ファイルのアップロード
ポイントはinput にmultiple属性の追加とinput のtype="file"でファイルを選択終了するとjavascriptで新しいinput type="file"を作るです。サンプルはこちら
新規作成中の画面
ファイル選択ボタンを押す毎に新しいファイル選択ボタンの作成をしています
新規作成中の画面
編集中の画面
新規作成用
<%= form_for(@book,:html => {:multipart => true}) do |f| %>
<% if @book.errors.any? %>
<%= pluralize(@book.errors.count, "error") %> prohibited this book from being saved:
<% @book.errors.full_messages.each do |msg| %>
- <%= msg %>
<% end %>
<% end %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= hidden_field_tag("imagenum",'',{:class => :imagenum}) %>
<%= f.submit %>
<% end %>
編集用
<%= form_for(@book,:html => {:multipart => true}) do |f| %>
<% if @book.errors.any? %>
<%= pluralize(@book.errors.count, "error") %> prohibited this book from being saved:
<% @book.errors.full_messages.each do |msg| %>
- <%= msg %>
<% end %>
<% end %>
<%= f.label :title %>
<%= f.text_field :title %>
<% @book.images.each do |image| %>
<%= check_box_tag "images[]",image.id,true %><%= image.filename %>
<% end %>
<%= hidden_field_tag("imagenum",'',{:class => :imagenum}) %>
<%= f.submit %>
<% end %>
登録:
投稿 (Atom)

