【Rails】最近学んだこと振り返り
最近お仕事でRuby on Railsを触っており, そこで苦戦したところをメモすることにした.
「ここはおかしい」「ここはこの方がいい」など教えていただけたら嬉しいです
bulmaでselectクラスを使うとき
お仕事ではView部分をslim
+ bulma
で書いている.
フォーム画面を作成しているとき, date_select
みたいなselectフォームを複数作ってくれるものを, bulma
のselect
クラスで包むとselect項目が縦に並んでしまう.
横並びにするためには中身をfield is-horizontal
でもう一度包む必要がある.
= form_for :hoge do |f| .field .select .field.is-horizontal = f.date_select
これを知らなくて1時間ぐらい至るところにis-horizontal
をつけまくってた...
複数のレコードを保存したい
1つのフォームで複数のレコードを保存するとき, form_for
を使うとparamsとかが被って当然保存できない.
ということでform_tag
を使って書いた.
= form_tag 'hoge_path', method: post do .field .input = text_field_tag 'fuga[]', @hoge.fuga / params[:fuga][i] でi番目のparamsを参照可能
保存時にはtransaction
を使って失敗時にロールバックできるようにする.
Hoge.transaction do @hoges.each_with_index do |hoge, i| Hoge.new(fuga: params[:fuga][i]) hoge.save! end end
一気に保存できたらtransaction
する必要もなさそうだけど (やり方はわからない)
ループ内でDBへアクセスしまくっていた
普通のことだが, DBへのアクセスは少なく済ませようという話
ids = [1, 2, 3] # Before: ids.each do |id| Hoge.find(id) # なんか処理 end # After: Hoge.where(id: ids) # なんか処理
最後に
Railsは入門書を読んだぐらいだったので, 実際の業務を通して自分の穴を補完できるのはやっぱりいいですね.
基本的なところで詰まってるからもっと勉強しないと...