0

どのステップが欠けていますか? iPhone に返されるビューは、application.html.erb と index.html.erb からのものです。

ステップ 1: config/initializers/mime_types.rb で、iPhone の宣言行のコメントを外します。

Mime::Type.register_alias "text/html", :iphone

ステップ 2: app/views/layouts/application.html.erbのコピーを作成し、それをapplication.iphone.erb という名前にします (正しいレイアウトが使用されていることがすぐにわかるように、タイトルを iPhone 固有のものに変更するのが好きです) )

<title>My iPhone Tasks</title>

ステップ 3: コントローラーに必要なビュー ファイルのコピーを作成し、index.iphone.erb などの名前を付けます。

ステップ 4: 具体的に iphone のフォーマットを呼び出す Respond_to ブロックの Rails 2 モデルに固執するか、または Respond_with 呼び出しを使用するより DRY なアプローチに切り替えるかを決定します。それが私がやったことです、えー試してみました;-)

ステップ 4a: コントローラーに Respond_to ブロックを追加します。

class TasksController < ApplicationController
respond_to :html, :iphone

ステップ 4b: 次のように、メソッドをドライアップします。

def index
  @tasks = Task.all
  respond_with (@tasks)
end

ステップ 5: サーバーを再起動し、iPhone からアプリを起動します。

4

1 に答える 1

2

Respond_with が適切に機能するには、モバイル MIME タイプのレスポンダーを作成する必要があります。

application_controller.rb でレスポンダーを定義します。

  def self.responder
    MobileResponder
  end

class MobileResponder < ActionController::Responder

  def to_format
    super
  rescue ActionView::MissingTemplate => e
    if request.format == "iphone"
      navigation_behavior(e)
    else
      raise unless resourceful?
      api_behavior(e)
    end
  end
end
于 2011-07-12T14:42:55.230 に答える