4

ビューのヘルパーを提供する宝石を書いています。ヘルパー経由で挿入したい HTML は複雑なので、_partial.html.erb ファイルに書きたいと思います。アプリケーションの load_path に含まれる gem のビュー パスを取得するにはどうすればよいですか?

注: このようなことを行う唯一の gem は Devise です。ビューが見つからない場合、Rails は (私のマシンでは) 次のようなロード パスを出力します。

Missing partial sortable_nested_set/tree with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "/home/jason/VirtualRestaurant3/app/views", "/home/jason/.rvm/gems/ruby-1.9.2-preview3/gems/devise-1.1.rc0/app/views"

Devise はどのようにそれを行いますか?

私の宝石: http://github.com/jrmurad/SortableNestedSet デバイスの宝石: + http://+github.com/plataformatec/devise

4

1 に答える 1

4

プラグインのベースディレクトリに「app」ディレクトリを配置すると、Railsはデフォルトでapp/viewsをビューパスに追加します。

.
├── app
│   └── views
│       └── plugin_name
│           └── _my_partial.html.erb

次に、プラグインのヘルパーメソッドからパーシャルを次のようにレンダリングできます。

render :partial => "plugin_name/my_partial"

Railsは、プラグインテスト環境でデフォルトでビューを使用可能にしないことに注意してください。それらを含めるには、test/test_helper.rbに以下を追加します。

ActionController::Base.prepend_view_path File.dirname(__FILE__) + "/../app/views"
于 2010-08-25T21:49:51.883 に答える