1

Ember.js を利用するように Rails アプリを更新しています。ember を統合する前にアプリ内に存在していたビューは引き続き正常に機能しますが、いくつかの新しいビューも追加しました。これらのビューには、必要なすべての ember パーツ (テンプレート、コントローラーなど) と、ビュー ファイルを除くすべての Rails パーツが含まれています。

ユーザーが内部リンクをクリックしてアクセスすると、これらのビューは正常に機能します。ただし、ユーザーがページをリロードするか、手動で URL を入力すると、次のエラーが発生します。

ActionView::MissingTemplate at /contribute
Missing template pages/contribute, application/contribute with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee]}. Searched in:
  * "/home/sites/whistlr/app/views"
  * "/home/.rvm/gems/ruby-2.0.0-p0@whistlr/gems/devise-3.0.0/app/views"

ビューファイルがないため、これは明らかに起こっています。問題は、これが厳密に必要かどうかです。RailsにEmberビューをロードするように指示する方法はありますか? 会話が終わったら、古い Rails ビュー ファイルをすべて削除するのが理想的です。

4

2 に答える 2

1

routes.rb必須ではありませんが、レールをセットアップして、ember アプリとその html を表示するインデックス ページと同じようにレンダリングされるすべてのルートをキャッチする必要があります。

namespace :api do
  # resources go here
end

root :to 'home#index'
match "/*path" => 'home#index'

注: このパス パターンをプロジェクトに合わせてカスタマイズすると、404 もここに送信されます。

于 2013-07-25T12:14:29.560 に答える
1

個々のビューを作成する必要はありません。秘訣は、アプリケーション コントローラーで例外をキャッチし、レイアウトを強制的にレンダリングすることです。

class ApplicationController < ActionController::Base
  rescue_from ActionView::MissingTemplate do |exception|
    render "/layouts/application"
  end
end
于 2013-09-18T21:39:24.390 に答える