0

2つのユーザーインターフェイスを持つアプリケーションがあります。

1つ目は通常のユーザー向けで、2つ目はiPhoneユーザー向けです。

コントローラ内でコードをリファクタリングして、respond_toの代わりにrespond_with宣言を使用するまで、すべてが正常に機能していました。

アプリケーションはまだ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メソッドを呼び出さないようにしたいと思います。

4

2 に答える 2

1

自分で解決しました。

これをイニシャライザファイルに追加する必要があります:

ActionController::Responder.class_eval do
  alias :to_iphone :to_html
end
于 2011-01-21T03:52:54.700 に答える
0

あなたがする場合:

respond_with(@refund, :location => project_refunds_path(@project)) do |format|
  format.iphone { whatever you had here before refactoring }
end
于 2011-01-13T18:15:31.500 に答える