質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

260閲覧

NameError uninitialized constant

ymatt

総合スコア20

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2018/05/07 15:45

前提・実現したいこと

RoRで3ヶ国語のウェブサイトを作ろうとしています。それぞれワンページですが、https://www.imd-net.com/column/1731/
で問合せフォームを作るつもりなので、viewの数としては3 x 3になります。
なお、後述のコードは一つ前に作ったサイトでは動作していましたが、そのサイトは1言語のみだったので、元ネタ通りInquiryControllerという名前を使っていました。

発生している問題・エラーメッセージ

NameError (uninitialized constant EnglishPagesController::EnglishPage): app/controllers/english_pages_controller.rb:4:in `index'

該当のソースコード (def indexのみ変更済み)

english_pages_controller.rb

class EnglishPagesController < ApplicationController def index # 入力画面を表示 @english_page = EnglishPage.new render :action => 'index' end def confirm # 入力値のチェック @inquiry = Inquiry.new(params[:inquiry]) if @inquiry.valid? # OK。確認画面を表示 render :action => 'confirm' else # NG。入力画面を再表示 render :action => 'index' end end def thanks # メール送信 @inquiry = English.new(params[:inquiry]) InquiryMailer.received_email(@inquiry).deliver # 完了画面を表示 render :action => 'thanks' end end

 
routes.rb

Rails.application.routes.draw do root 'english_pages#index' match '/en/index', to: 'english_pages#index', via: 'get' match '/ma/index', to: 'mandarin_pages#index', via: 'get' match '/ja/index', to: 'japanese_pages#index', via: 'get' post 'en/confirm' => 'english_pages#confirm' post 'en/thanks' => 'english_pages#thanks' post 'ma/confirm' => 'mandarin_pages#confirm' post 'ma/thanks' => 'mandarin_pages#thanks' post 'ja/confirm' => 'japanese_pages#confirm' post 'ja/thanks' => 'japanese_pages#thanks' end

試したこと

requireは効果がありませんでした。
そもそも3言語、ワンページ、問合せフォームの組み合わせでこのような構造にするのが適切かどうか、怪しいところとは思っています。それも含め、アドバイス、駄目出し等ありましたらお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

言語毎に contololler, view を作っていくのは対応言語の追加・変更が大変です。
多言語対応したサイトをつくる方法が Rails には用意されています。

"rails 多言語化" で google 検索すると、複数の言語に対応した Rails アプリの作り方の情報を得られます。

  • Railsアプリを多言語対応するまで

http://www.uosansatox.biz/entry/2017/08/31/152237

一言語用に作成した青瓜をベースにして、それを国際化するようにすると良いです。

投稿2018/05/07 20:44

編集2018/05/07 22:08
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ymatt

2018/05/08 01:39

ありがとうございます。以前このような方法を調べたことがあったのですが、具体的にどうすすめていいかわからず、頓挫しました。。。まずは一言語で完成させてしまってもいいということですか?それからyamlファイルに翻訳を記入していくという流れですかね。もうひとつ、システムが自動で生成する訳文とかもありますか?Noticeなど。自動生成は翻訳がおかしくなりそうなのでできるだけ避けたいと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問