0

次のコマンドでスキャフォールドを生成しました:

rails generate scaffold indice valeur:decimal date:date

ゴージャスな宝石「rails-translate-routes」を使用して、URL(パス)をI18国際化でフランス語に翻訳します。

また、 config / route.rbを使用してインデックスコントローラーを名前空間(app / controller / catalogs / pub_indices_controller.rb)に配置します。

  namespace :catalogs do
    resources :pub_indices
  end

Railsの屈折のため、結果のルートは正しくありません。単数形には「indice」ではなく「index」を使用しますが、生成には「indice」を使用し、モデルの名前はpub_indice.rbです。

             catalogs_pub_indices_fr GET    /catalogues/indices(.:format)                      catalogs/pub_indices#index {:locale=>"fr"}
             catalogs_pub_indices_en GET    /en/catalogs/pub_indices(.:format)                 catalogs/pub_indices#index {:locale=>"en"}
                                     POST   /catalogues/indices(.:format)                      catalogs/pub_indices#create {:locale=>"fr"}
                                     POST   /en/catalogs/pub_indices(.:format)                 catalogs/pub_indices#create {:locale=>"en"}
           new_catalogs_pub_index_fr GET    /catalogues/indices/nouveau(.:format)              catalogs/pub_indices#new {:locale=>"fr"}
           new_catalogs_pub_index_en GET    /en/catalogs/pub_indices/new(.:format)             catalogs/pub_indices#new {:locale=>"en"}
          edit_catalogs_pub_index_fr GET    /catalogues/indices/:id/modifier(.:format)         catalogs/pub_indices#edit {:locale=>"fr"}
          edit_catalogs_pub_index_en GET    /en/catalogs/pub_indices/:id/edit(.:format)        catalogs/pub_indices#edit {:locale=>"en"}
               catalogs_pub_index_fr GET    /catalogues/indices/:id(.:format)                  catalogs/pub_indices#show {:locale=>"fr"}
               catalogs_pub_index_en GET    /en/catalogs/pub_indices/:id(.:format)             catalogs/pub_indices#show {:locale=>"en"}
                                     PUT    /catalogues/indices/:id(.:format)                  catalogs/pub_indices#update {:locale=>"fr"}
                                     PUT    /en/catalogs/pub_indices/:id(.:format)             catalogs/pub_indices#update {:locale=>"en"}
                                     DELETE /catalogues/indices/:id(.:format)                  catalogs/pub_indices#destroy {:locale=>"fr"}
                                     DELETE /en/catalogs/pub_indices/:id(.:format)             catalogs/pub_indices#destroy {:locale=>"en"}

だから私は少しグーグルして「インフレクター」という言葉を発見しました...それで私は私のconfig/route.rbで公式ドキュメントによって提供されたトリックを使用しました:

  ActiveSupport::Inflector.inflections do |inflect|
    inflect.irregular 'indice', 'indices'
  end

そして、ルートヘルパーは大丈夫に見えます:

             catalogs_pub_indices_fr GET    /catalogues/indices(.:format)                      catalogs/pub_indices#index {:locale=>"fr"}
             catalogs_pub_indices_en GET    /en/catalogs/pub_indices(.:format)                 catalogs/pub_indices#index {:locale=>"en"}
                                     POST   /catalogues/indices(.:format)                      catalogs/pub_indices#create {:locale=>"fr"}
                                     POST   /en/catalogs/pub_indices(.:format)                 catalogs/pub_indices#create {:locale=>"en"}
          new_catalogs_pub_indice_fr GET    /catalogues/indices/nouveau(.:format)              catalogs/pub_indices#new {:locale=>"fr"}
          new_catalogs_pub_indice_en GET    /en/catalogs/pub_indices/new(.:format)             catalogs/pub_indices#new {:locale=>"en"}
         edit_catalogs_pub_indice_fr GET    /catalogues/indices/:id/modifier(.:format)         catalogs/pub_indices#edit {:locale=>"fr"}
         edit_catalogs_pub_indice_en GET    /en/catalogs/pub_indices/:id/edit(.:format)        catalogs/pub_indices#edit {:locale=>"en"}
              catalogs_pub_indice_fr GET    /catalogues/indices/:id(.:format)                  catalogs/pub_indices#show {:locale=>"fr"}
              catalogs_pub_indice_en GET    /en/catalogs/pub_indices/:id(.:format)             catalogs/pub_indices#show {:locale=>"en"}
                                     PUT    /catalogues/indices/:id(.:format)                  catalogs/pub_indices#update {:locale=>"fr"}
                                     PUT    /en/catalogs/pub_indices/:id(.:format)             catalogs/pub_indices#update {:locale=>"en"}
                                     DELETE /catalogues/indices/:id(.:format)                  catalogs/pub_indices#destroy {:locale=>"fr"}
                                     DELETE /en/catalogs/pub_indices/:id(.:format)             catalogs/pub_indices#destroy {:locale=>"en"}

しかし、Railsは次のような「インデックス」を使用したルートの受け入れを拒否します:new_catalogs_pub_indice_path

代わりに、誤った形式を受け入れます:new_catalogs_pub_index_pathですが、rakeルートは別のことを言っています。

誰かが私が間違っていることを私に説明できますか?(Railsがこの単数形/複数形を使用していなかったらよかったのに。もっと簡単なため息があったでしょう)

=====更新=====

わかりました、私はこの質問に素早く答えることになりました。さらに検索した後、Ilは、私の「語尾変化」コードをconfig / initializers/inflections.rbに配置する必要があることに気付きました。

  ActiveSupport::Inflector.inflections do |inflect|
    inflect.irregular 'indice', 'indices'
  end

公式ドキュメントはその方​​法を説明しています。どこにあるのかわかりません。コンテキストがconfig/route.rbについて話していたので、コードをroute.rbに入れることを考えましたが、それは間違っています。

公式文書には、インフレクターについての説明が不足しています。それは残念です^^みんなに注意してください;-)

4

1 に答える 1

1

わかりました、アップデートで説明したように。

ルート ヘルパーの構文は、 config/initializers/inflections.rbで infelctor を使用して変更できます。

公式ドキュメントには例が示されています。

于 2012-12-04T15:45:20.947 に答える