Rails3 и Respond_with проблема

У меня есть приложение, в котором у меня есть два пользовательских интерфейса.

Первый предназначен для обычных пользователей, а второй - для пользователей iphone.

Все работало нормально, пока я не реорганизовал свой код в контроллере, чтобы использовать декларативную response_with вместо response_to.

Приложение все еще работает для интерфейса html (:format =>:html), но не для интерфейса iphone(:format =>:iphone).

На iphone, когда я делаю следующее действие (:index,:new,:edit,:show), это работает.

Но когда я это делаю (:create,:update,:destroy), я получаю сообщения о том, что шаблон не найден (например, create.iphone.haml).

На моем контроллере у меня есть

respond_to :html, :iphone

А затем, например, редактирование и обновление действия

def edit
    @refund = Refund.find(params[:id])
    respond_with(@refund)
  end
  def update
    @refund = Refund.find(params[:id])
    if @refund.update_attributes(params[:refund])
      flash[:notice] = 'Refund was successfully updated.'
    end
    respond_with(@refund, :location => project_refunds_path(@project))
  end

На самом деле, мне бы хотелось, чтобы формат: iphone обрабатывался так: html - это... а не путем вызова метода to_format, как это указано в документе.

2 ответа

Решение

Решил это сам.

Просто нужно добавить это в файл инициализатора:

ActionController::Responder.class_eval do
  alias :to_iphone :to_html
end

Что делать, если вы делаете:

respond_with(@refund, :location => project_refunds_path(@project)) do |format|
  format.iphone { whatever you had here before refactoring }
end
Другие вопросы по тегам