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