今日も対応した問題の対処方法を紹介です。
githubからgit pullしたけどコンフリクトが起きてpullできない場合の対処方法
本来はマージ後commitするのが正しい対処方法です。Visual Studio Codeとかを使うとマージをわかりやすくできます。
が、githubのファイルが最新の状態であればgit cloneしなおしたほうが早いと思います。
なのでgithubにアクセスして
して
して
git clone <コピーしたurl>
でcloneしなおすのが一番早いと思います。
railsの非同期処理のチェック方法
まず初めに動作しない非同期処理をクリックしてログ上何もエラーが発生していないか確認します。
Processing XXXXControllers#xxxx AS JS
と表示されていれば非同期通信は出来ています。
その後INSERTやDELETEでエラーが発生してROLLBACKしている場合
正しい値が渡っていないのでbyebugなどを使って正しい値が渡るように修正しましょう。
ログ上エラーが発生していない場合は非同期処理は出来ているので残るはViewの問題です。
create.js.erbやdestroy.js.erbでコンテンツを差し替えている処理が入っていると思います。
今回もこのViewが正しく設定されていなかったため処理がうまくいっていませんでした。
部分テンプレートにしている親部分のdivタグが正しく設定されているか確認しましょう。
bootstrapとStyleSheet
多くの方がbootstrapを使用していると思います。
見た目上、線を引いたり背景色を変更したりbootstrapと干渉しない場所をStyleSheetで設定するのは良いですがTableタグやpadding, marginなどStyleSheetで設定してしまうと干渉して思った通りに表示されないです。
オブジェクトの配置にかかわる部分はbootstrapで設定するようにしましょう。
Railsで中間テーブルのAND検索
難しかったです。AND検索を一括して動いてしまうのでそれぞれ検索して完全に一致するものだけ抽出するようにしました。
@tags = params[:keywords].split('/\s+/') @posts_result = [] @tags.each do |k| @posts = Post.joins(:post_tags).where(post_tags: {tag_id: k}).pluck(:id) @posts.each do |p| @posts_result.push(p) end end @post_ids = @posts_result.uniq.map{|item| [item, @posts_result.count(item)]}.to_h.find_all{|k, v| v == @tags.length}.to_h @posts = Post.where(id: @post_ids.keys)
eager_loadとか使えばいけそうなのですが・・・。知っている方いたら教えてください!
コメント