(Отсутствует) Шаги по поддержке iPhone в новом приложении Rails 3 - PullRequest
0 голосов
/ 19 июня 2011

Какой шаг мне не хватает? Представление, возвращаемое на мой 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: Решите, придерживаться ли модели Rails 2 блоков response_to, которые специально вызывают формат iphone, или переключиться на более СУХОЙ подход, использующий вызов response_with. Вот что я сделал, попробовал; -)

Шаг 4a: Добавьте в свой контроллер блок response_to:

class TasksController < ApplicationController
respond_to :html, :iphone

Шаг 4b: СУШИТЕ ваши методы, такие как:

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

Шаг 5: перезагрузите сервер и нажмите приложение с вашего iPhone.

1 Ответ

2 голосов
/ 12 июля 2011

Вы должны написать респондент для вашего мобильного MIME-типа, чтобы response_with работал правильно.

Определите респондента в 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
...