0

これがトリックです。「page_type」というフィールドを持つPagesというモデルがあります。これは、「html」、「image」、「vcard」、「content」というフィールドの3つのバリエーションのいずれかになります。そのため、要求されたページのタイプに応じて、さまざまなmimetypeで応答するアプリが必要になります。

page_typeが"html"に設定されている場合-適切なビューとhtml_safeを使用してコンテンツをhtmlとしてレンダリングするのは簡単です。

page_typeが「image」に設定されている場合-パスを使用して画像を取得し、コンテンツに保存して、ユーザーが画像を要求したかのようにユーザーに送り返します。

「vcard」も同様です。

どうやってやるの?

4

1 に答える 1

1

アプリでリソース(ページ)にアクセスするためのURLを生成している場合は、リソースの場所をRESTfullyに指定できます(/pages/2.jpg、/pages/3.vcard、/ pages / 4(デフォルトはhtml))。 )page_url(@page、:format =>'jpg')などの組み込みのRailsビューヘルパーを使用します。次に、Railsでrepond_toを使用してリソースを配信するだけです。

respond_to do |format|
  format.html { # default rendering in show.erb.html }
  format.jpg { # perhaps send_file or send_data call }
  format.vcard { # send attachment }
end

詳細については、 Railsルーティングガイドを確認してください。.vcardのリクエストを処理するようにRailsを設定する必要があります。この要点を参照してください。

リンク生成(リソースへの外部参照)を制御せず、/ pages / 2(jpeg)のようなリクエストを受け取ることを期待している場合は、page_type列を使用してsend_fileで条件付きでレンダリングすることにフォールバックする必要があります、send_data、またはその他のRailsレンダリングメソッド。上記のrespond_toの各ブロックに作成したロジック(メソッド)を再利用して、コントローラーに「respond_to_html」、「respond_to_jpg」、「respond_to_vcard」メソッドを含めることを検討してください。

于 2012-05-20T16:51:38.830 に答える