contentモデルの下にcontent _detailモデルがあって、
accepts _nested _attributes _forしていて、fields _forを使う場合。
1
|
f.fields_for :content_details do |c|
|
って書くと、contentに紐付く全部のcontent _detailsがformとして表示されちゃう。
第二引数にインスタンスを渡せばいいみたい。
1
|
f.fields_for :content_details, @content.content_details.where(state = 1) do |c|
|
ちなみに第二引数はnilがデフォルト引数なので
1
2
|
f.fields_for :content_details
f.fields_for :content_details, nil
|
は同じ意味になるので、インスタンス変数は値を入れなければnilなので
1
|
fields_for :content_details, @details
|
ってやって、editの時だけ@detailsに値を入れるとうまく変更したいレコードのみ抽出できて、処理を切り分けられる気がします。
ある月に指定日が含まれるんか判定したい
月のRangeオブジェクトは
Time #all _monthで取れる(要ActiveSupport)
含まれるってことはbetween?かな
1
2
3
|
Time.now.between?(Time.now.all_month)
# ArgumentError: wrong number of arguments (1 for 2)
# from (pry):8:in `between?'
|
ありゃ。
あ、include?だったかな?
1
2
|
Time.now.all_month.include?(Time.now)
# TypeError: can't iterate from Time
|
むむ。
じゃ、じゃあcovers
1
2
3
4
|
Time.now.all_month.cover?(Time.now)
# -> true
Time.now.all_month.cover?(Time.now.prev_month)
# ->false
|
できたヽ(`▽´)/
Mac Book Airで仕事しています。
普段はTrack pad使っているんだけど。
Excelとか使う時はやっぱりマウス使いたいってことで。
その辺に転がっていたUSBマウスを接続して作業している。
その際に他のワークスペース(デスクトップ?)に切り替えたい時はわざわざマウスから手を話して、トラックパッドの方で3本指スワイプしていた。
これが超絶面倒なので、マウスのセンタークリックでできないかとやってみたら出きた。
システム環境設定 > Mission Control

ただchrome使っててタブ消したい時はセンタークリックで消してたけど。
それが効かなくなるのが難点か・・・
欲張り過ぎかなぁ。
※Magic Mouseはお金ないので買えない人なのです
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が通らない・・・
find _byのようなダイナミックファインダで例外
びっくりまーくつければいいみたいです。
1
|
Prefecture.find_by_name!("存在しない件" ) # => ActiveRecord::RecordNotFound
|
rails4ではこうかな
1
|
Prefecture.find_by!(name: "存在しない件")
|
全モデルから特定の列を持つモデルを抽出
例えばzip
1
2
|
ActiveRecord::Base.send(:subclasses).select{|m| m.column_names.include?("zip")}
ActiveRecord::Base.send(:subclasses).select{|m| m.column_names.include?("zip")}.map(&: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
|
ちょっと感動したけど、普通にみんな使ってるのだろうか。
しかし、言いたいことは伝わると思うのだが、
コード適当すぎかも(–;)