4

この投稿によると、Rails 3 用のカスタム レンダラーを作成する方法に関する Yehuda の例に従っています: http://www.engineyard.com/blog/2010/render-options-in-rails-3/

コードは機能していますが、このコードをどこに置くべきかを理解するのに苦労しています。現在、コントローラー ファイル内にコードが詰まっています。これを行うと、すべてが機能します。ただし、コードを lib フォルダーに移動するときは、レンダラーを必要とするコントローラー内のファイルを明示的に「必要」にします。そうしないと、機能しません。はい、ファイルは lib フォルダーにあるときに自動的に読み込まれます。しかし、require を実行するまで、レンダラーを追加するコードが何らかの理由で機能しません。

レンダラーと MIME タイプを追加するコードをどこに配置すれば、Rails 3 がそれを取得して登録し、コントローラーでファイルを手動で要求する必要がなくなりますか?

4

3 に答える 3

1

イニシャライザーまたはlibに入れて、アプリケーションコントローラーで要求します。

于 2011-02-16T15:42:08.780 に答える
1

Jose Valim の著書Crafting Rails applicationsでは、これが最初の章です。彼は Prawn を使用して PDF MIME タイプとレンダラーを作成します。

彼の例では、彼はこれで作成lib/pdf_renderer.rbしました:

require "action_controller" 
Mime::Type.register "application/pdf", :pdf

libは自動ロードされなくなったため、自動ロードするか、lib使用する場所でこのファイルを具体的に要求する必要があります。

ここでは、初期化子も適切な場合があります。

于 2011-02-16T15:55:02.730 に答える
0

ここでの提案に基づいて、これについてさらに掘り下げました。

「mime_types」初期化子が既にコード ベースにあることがわかりました。デフォルトでは、これはレールによって作成されていると思います。その中にいくつかのコメントアウトされた例がありました。そのため、カスタム MIME タイプをこのファイルに追加しました。

また、カスタム レンダラーに初期化子を使用して、アプリで自動的に読み込まれて利用できるようにすることにしました。このようにして、必要なさまざまな場所にそれを含めることを覚えておく必要はありません。作成したフォーマットに応答して、データを送信できます。

ヒントをありがとう、みんな。

于 2011-02-16T19:04:34.800 に答える