jQuery力のなさに泣けてきた。
data-hogeにdataでアクセスできるの知らんかった
こんなのがある
1
< a href = "foo" id = "bar" data - count = "1" data - url = "http://~.com" >< /a>
いままではこうやって値を取得してた。
1
$ ( '#bar' ) . attr ( "data-count" );
dataってあったのね。
1
$ ( '#bar' ) . data ( "count" );
しかも要素に設定されているdata-属性も一気に取得もできる - >
http://stackoverflow.com/questions/4187032/get-list-of-data-attributes-using-javascript-jquery
当然ajaxで一気に渡せる(※coffeescript)
以下の例はリンクを押したら、どっかから何か取ってきて何かを追加してる雰囲気のやつ。
1
2
3
4
5
6
7
8
9
10
11
12
13
$ ( document ) . on 'click' , '#hoge' , ( event ) ->
$. ajax
url : "どっかのURL"
type : "GET"
data : $ ( @ ) . data ()
success : ( data ) ->
$ ( '#bar' ) . append ( data )
error : ( XMLHttpRequest , textStatus , errorThrown ) ->
console . log ( "XMLHttpRequest : " + XMLHttpRequest . status )
console . log ( "textStatus : " + textStatus )
console . log ( "errorThrown : " + errorThrown . message )
もっと早く出会いたかった・・・
ちなみに今回はお手軽にタグのdata要素に情報もたしてそれを送信する例でしたが。
フォームの値を全部キーと値のペアとかで送りたければ、serializeArrayが超ベンリです。こっちは知ってた!
http://jquery-master.net/ajax/serialize.php
railsでajax使って処理していて、コントローラからjsファイルを読んでviewの内容を書き換えたり、追加したりすることがあると思う。
# hogehoge.js.erb
1
$ ( "kokonitsuika" ) . append ( "<%= escape_javascript(render " partial_view ") %>" );
このくらいなら多分ないけど。結構複雑なjs.erbに成長しちゃってjsのデバッグをしたい時には、chromeでインスペクション開いたままdebuggerを差し込むと止まってくれるので幸せになれるかも?
1
2
debugger
$ ( "kokonitsuika" ) . append ( "<%= escape_javascript(render " partial_view ") %>" );
腰が痛いぞ。
何を言っているんでしょう。
コード見たほうが早いですかね
1
2
3
4
5
6
7
8
9
# andで条件組み立て
def condition
cons = []
cons << User . arel_table [ :name ]. matches ( "%hoge%" )
cons << User . arel_table [ :nick_name ]. matches ( "%fuga%" )
cons . inject ( & :and )
end
user . where ( condition )
配列の結合で一瞬悩んだのでメモ。
andをorにすると、どれかに一致するという条件になります。
色々と必要ないものとかもありそうだけど、やったこと全部書く
なにはともかく
xcodeのcommand line toolの入れなおし
んで、開発中のrailsディレクトリでrails serverしようとしたら動かない。
とりあえず再bundle installしなおしてみる。
nokogiriのインストールでlibxmlがどうこうってエラーでたから
1
2
3
~ /.rbenv/ versions / 2 . 0 . 0 - p247 / lib / ruby / gems / 2 . 0 . 0 / gems / nokogiri - 1 . 6 . 0 / ext / nokogiri / tmp / i686 - apple - darwin11 / ports / libxml2 / 2 . 8 . 0 / libxml2 - 2 . 8 . 0
sudo make clean
sudo make
したらbundle installが成功。
でもrails serverしたら
1
Could not find libv8 - 3 . 11 . 8 . 17 in any of the sources
って出る。
まず
brew updateでこんなエラーが出た
1
Error : Failure while executing : git pull - q origin refs / heads / master : refs / remotes / origin / master
pullできないみたいなので、ここを見つつ以下の様なことをやる。
http://d.conma.me/entry/20120301/1330613125
1
2
3
4
5
6
cd `brew --prefix`
git reset -- hard origin / master #=> untrackファイルがあるからダメとか言われる
git add .
git checkout - f
git reset -- hard origin / master
brew update
brew update成功
んでここを見つつ以下を実行
How to fix libv8 error from Gemfile on Mavericks?
http://stackoverflow.com/questions/19568852/how-to-fix-libv8-error-from-gemfile-on-mavericks
1
2
3
gem uninstall libv8
brew install v8
gem install therubyracer
brew install v8が通らない・・・
1
2
3
4
5
6
7
8
==> Downloading https : // github . com / v8 / v8 / archive / 3 . 19 . 18 . 4 . tar . gz
######################################################################## 100.0%
==> make dependencies
-- revision 1501
dyld : Library not loaded : /usr/ local / lib / libsqlite3 . 0 . 8 . 6 . dylib
Referenced from : /usr/ local / bin / svn
Reason : image not found
make : *** [ dependencies ] Trace / BPT trap : 5
また、エラー・・・
1
2
brew rm svn
brew install svn
んで再度
通った…
してから、
1
2
3
rails server
Could not find libv8 - 3 . 11 . 8 . 17 in any of the sources
Run `bundle install` to install missing gems .
あれ、ダメだ・・
1
2
3
4
5
6
7
8
bundle exec rails server
=> Booting WEBrick
=> Rails 3 . 2 . 13 application starting in development on http : // 0 . 0 . 0 . 0 : 3000
=> Call with - d to detach
=> Ctrl - C to shutdown server
[ 2013 - 10 - 28 13 : 47 : 46 ] INFO WEBrick 1 . 3 . 1
[ 2013 - 10 - 28 13 : 47 : 46 ] INFO ruby 2 . 0 . 0 ( 2013 - 06 - 27 ) [ x86_64 - darwin12 . 5 . 0 ]
[ 2013 - 10 - 28 13 : 47 : 46 ] INFO WEBrick :: HTTPServer #start: pid=16067 port=3000
ま、まぁいいか。
find _byのようなダイナミックファインダで例外
びっくりまーくつければいいみたいです。
1
Prefecture . find_by_name! ( "存在しない件" ) # => ActiveRecord::RecordNotFound
rails4ではこうかな
1
Prefecture . find_by! ( name : "存在しない件" )
モデルで以下のABCDというクラスがあって、それぞれに親子関係がある場合。
A→B→C→D
かなり適当に書くとこうやって取れる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class User_1 < ActiveRecord :: Base
has_many user_2
has_many user_3 , through : user_2
has_many user_4 , through : user_3
end
class User_2 < ActiveRecord :: Base
belongs_to user_1
has_many user_3
end
class User_3 < ActiveRecord :: Base
belongs_to user_2
has_many user_4
end
class User_4 < ActiveRecord :: Base
belongs_to user_3
end
User_1 . user_4 . first . class # => User_4
ちょっと感動したけど、普通にみんな使ってるのだろうか。
しかし、言いたいことは伝わると思うのだが、
コード適当すぎかも(–;)
踏み台サーバー上でcapistranoで
1
`return_or_raise': Signature expired: 20130924T043045Z is now earlier than 20130924T043046Z (20130924T043546Z - 5 min.) (AWS::ELB::Errors::SignatureDoesNotMatch)
って出て、デプロイ出来ない。
結論。
サーバーの時刻が遅れてたからでした。
はまったので、みなさんも同じことにならないように。