7

誰かがあなたのサブフォルダの.html.erbファイルをルーティングする方法に光を当てることができますか?これは次のように配置されます:

view/pages/en/index.html.erb

これをルーティングするために、route.rbで次のことを行っています

match ':lang/index', :to => 'pages/en#index'

リンクコードについては、ヘッダーにこれがあります

<%= link_to "Home", index_path %>

私が得ているエラーは

 Routing Error
 uninitialized constant Pages

ルート:

ここに画像の説明を入力してください

4

4 に答える 4

3

名前空間は、コードとビューをサブフォルダーに整理します:http: //guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

そのように編成されたフォルダのみが必要な場合は、次のようviews/pagesにすることができます。PagesController

render "#{I18n.locale}/#{action_name}"

質問:なぜview/pages/en/index.html.erb代わりにあなたが欲しいのview/pages/index.en.html.erbですか?それは箱から出してうまくいくでしょう。

于 2012-11-05T15:05:55.673 に答える
2

更新 これはroute.rbでどのように機能するかです:-

match ':lang/index', :to => 'pages#index'

コントローラでレンダリングします:-

def index
  render "pages/en/index"
end

def about
  render "pages/#{params[:lang]}/about"
end
于 2012-11-05T18:31:16.507 に答える
1

AFAIK、ビューにルーティングする方法はありません。URLをコントローラーのアクションにルーティングできます。そのアクションは、ビューのレンダリングを担当します。

名前空間ルーティングを使用して、リソースをサブフォルダーに配置できます。

..。

すでに@TuteCによって書かれた私が書きたかったもの。そのリンクをたどるだけで、彼が説明したように、言語固有のものをすぐに入手できます。

于 2012-11-05T15:08:32.450 に答える
1

私はしばらくこれに苦労していて、最終的に簡単な解決策を見つけました:

config / routers.rb

get 'pages/:first/:second/:third' => 'pages#show'

次に、PagesControllerで

def show
    render "/pages/#{params[:first]}/#{params[:second]/#{params[:third]}"
end

次に、ビューで次のいずれかをレンダリングします。

pages/index => pages/index.html.erb
pages/index/en => pages/index/en.html.erb
pages/foo/bar/hello-world => pages/foo/bar/hello_world.html.erb

これについての最もよい事はそれが単純で、あなたがそれを無期限に拡張することができるということです。基本的なテンプレートをレンダリングするだけの場合は、ビューフォルダを簡単にクリーンアップできます。

于 2018-09-20T02:56:14.790 に答える