
じろう
2019年11月02日に参加
学習履歴詳細
TechCommit「個人アプリの開発相談進捗共有会」に参加。アイデアに対してのフィードバックをもらう / 万葉課題、辞書ファイルをviewから呼び出して表示に使う方法が分かった
辞書ファイルをviewでも使いたい
config/locale/views/tasks/ja.yml
ja: tasks: index: index_title: 'タスク一覧' created_at: '作成日時' name: 'タスク名' content: '内容' show: '詳細' edit: '編集' destroy: '削除' new: '新規タスク作成'
app/views/tasks/index.html.slim
table.table.table-hover thead.thead-default = tag.tr do th = タスク名 th = 内容 th = t 'views.tasks.index.show' th = t 'activerecord.errors.messages.record_invalid' th tbody - @tasks.each do |task| = tag.tr do td = task.name td = task.content td = link_to '詳細', task_path(task.id) td = link_to '編集', edit_task_path(task.id) td = link_to '削除', task_path(task.id), method: :delete
となり、th = t 'activerecord.errors.messages.record_invalid'
はうまく効いてるものの、th = t 'views.tasks.index.show'
は何故かshowと表示されてしまう。
解決策
config/application.rb
module AppName class Application < Rails::Application # 省略 config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] # このコードを追記して複数のlocaleファイルを読み込めるようにする end end
辞書ファイルでしっかり指定されていれば、t '.辞書名'
でいける。 link_to
の中では t('.辞書名')
にすることで解決。
以下、置き換えたコード
app/views/tasks/index.html.slim
h1 = t '.index_title' table.table.table-hover thead.thead-default = tag.tr do th = t '.name' th = t '.content' th = t '.show' th = th tbody - @tasks.each do |task| = tag.tr do td = task.name td = task.content td = link_to t('.show'), task_path(task.id) td = link_to t('.edit'), edit_task_path(task.id) td = link_to t('.destroy'), task_path(task.id), method: :delete
結果
このように記述することで、辞書ファイルを読み込むことができる!
Rails
2020年03月01日(日)
2.7時間