【Rails】date_selectで"undefined method for translation missing ja date order string"
Viewで下記のようにdate_selectを使うと、i18nの日本語設定が足りずエラーが出た。
<%= f.date_select(:birthday, {:use_month_numbers=>true, :start_year=>1930, :end_year => Time.now.year, :default =>'1990-1-1'.to_date}, {:class => ["form-control", "inline_date_select"]}) %>
こんなエラーが出た
undefined method for translation missing ja date order string
config/locales/ja.ymlを作り、以下を記入することで解決。
ja: date: formats: default: "%Y/%m/%d" short: "%m/%d" long: "%Y年%m月%d日(%a)" day_names: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"] abbr_day_names: ["日", "月", "火", "水", "木", "金", "土"] month_names: ["~", "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"] abbr_month_names: ["~", "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"] order: ["year", "month", "day"] time: formats: default: "%Y/%m/%d %H:%M:%S" short: "%y/%m/%d %H:%M" long: "%Y年%m月%d日(%a) %H時%M分%S秒 %Z" am: "午前" pm: "午後"
【Rails】active_adminとwill_paginateを同時に使うとNoMethodError
Railsでactive_adminを導入し、管理ページからAdmin Users等のリソース一覧のリンクをクリックすると以下のエラーが出た。
NoMethodError (undefined method `per' for #<ActiveRecord::Relation::ActiveRecord_Relation_AdminUser:0x007fb64c4bce40>):
どうも、will_paginateとactive_adminを同時に使おうとすると出るエラーみたい。
解決策
config/initializers下に下記の内容でkaminari.rbを作る。
Kaminari.configure do |config| config.page_method_name = :per_page_kaminari end
なぜ直ったかは良く分かりません。誰か教えてください。
参考記事
David Chua : Fix undefined method `per' error on Will_Paginate and ActiveAdmin
Railsでcontrollerやmodelを削除する方法
Controller削除
rails destroy controller コントローラ名
Model削除
rails destroy model モデル名
Railsでページネーションを導入する
Railsでページネーションを導入する方法を調べました。
will_paginateというgemを使うと簡単に実装できました。
Gemfile
gem 'will_paginate' gem 'bootstrap-will_paginate'
Controller
class MembersController < ApplicationController def index @members = Member.paginate(page: params[:page]) end end
ビュー
<%= will_paginate %> <ul> <% @members.each do |member| %> <li><%= link_to get_member_name(member), member %></li> <% end %> </ul> <%= will_paginate %>
以上!
【Rails】Helperメソッドをcontroller内で使用できるようにする
RailsのHelperメソッドは、デフォルトでView内で使用することができるが、controller内では使用することができない。
これをcontroller内でも使用できるようにするには、application_controller.rbでHelperをincludeしてやれば良い。
class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception include SessionsHelper end
上の例だと、controller内でSessionsHelperのメソッドを使用することができるようになる。