こんにちは。菜笑なえです。
今回はRailsで作られたFatFreeというCRM(顧客管理システム)のバグについての備忘録です。
今回のバグは本家FatFreeでも確認できました。
本家FatFreeにログインできない方は、この記事の最後に書いているログイン情報でログインしてみてください。
FatFreeバグ内容
今回対応したバグは2つです。
- 各項目の一覧表示画面を表示しているときに、サイドバーのチェックボックスを操作すると、ページ下部にある
Campaigns per pageが未選択になる - 詳細検索をしたときにエラーが表示される
Campaigns per page というのはページ毎の表示件数の部分ですね。

特に大きな影響を与えるバグでもないのですが、気になったので解決策を考えてみました。
対処用完成コード(コピペ用)
app/views/shared/_paginate_with_per_page.html.haml の内容を以下に置き換えれば解決します。
= image_tag("loading.gif", size: 'thumb', class: "spinner", style: "display: none;")
= paginate
.per_page_options
%span.per_page_label
= t('entities_per_page', entity: t(controller_name))
- per_page = @per_page || current_user.pref[:"#{controller_name}_per_page"] || klass.per_page
- [ 10, 20, 30, 50 ].each do |count|
- if count == per_page.to_i
%em.current= count
- else
- q = params[:q] ? params[:q].permit! : nil
= link_to count, send("redraw_#{controller.controller_name}_path", per_page: count, query: params[:query], q: q), remote: true本家FatFreeの元のコードは記事の最後に貼っています。
対応箇所
変更点は2箇所です。
@per_pageがない時の対応params[:q]をの内容をpermitで許可する
@per_page がない時の対応
サイドバーのチェックを操作したとき、@per_page = nil となっていました。
そのため、@per_page.to_i = 0となり、10, 20, 30, 50 というあらかじめ用意された表示件数にマッチしないので、未選択で表示されていました。
なので@per_page がnilにならないように変えるだけで、Campaigns per pageが未選択になるというバグを解決できます。
この部分ですね。
- per_page = @per_page || current_user.pref[:"#{controller_name}_per_page"] || klass.per_pageparams[:q] をの内容をpermit で許可する
Advanced search(詳細検索) をした際に、以下のエラーが出ることがありました。
unable to convert unpermitted parameters to hashパラメータが許可されてないので、ハッシュにできないよ。と言っています。
これが出るとそれ以降の処理が進まないので、params[:q].permit! とすることでパラメータの許可をするという対応をとりました。
ここです。
- q = params[:q] ? params[:q].permit! : nil本家FatFreeの記述
= image_tag("loading.gif", size: 'thumb', class: "spinner", style: "display: none;")
= paginate
.per_page_options
%span.per_page_label
= t('entities_per_page', entity: t(controller_name))
- [ 10, 20, 30, 50 ].each do |count|
- if count == @per_page.to_i
%em.current= count
- else
= link_to count, send("redraw_#{controller.controller_name}_path", per_page: count, query: params[:query], q: params[:q]), remote: true環境
Rails 5.2
おわりに
FatFreeはこれ以外にも大小いろんなバグがあるので、自分の変更がおかしいんじゃないかな?と思うと同時に、本家ではどうだろう?と確認しながら実装を進めていったほうが良いと思います。
大小いろんなバグがまだあるようなので。
とは言っても、ここまで完成されたCRMを無料で使えるのはありがたいですね!
ちなみにDEMOサイトに書いてるaaron というユーザーでログインできない方は、以下の情報でログインできます。
誰かがaaron のパスワード変えたみたいですね…
Username: ben
Password: ben