2012-03-21 2 views
1

オンラインのいくつかのチュートリアルに基づいて、私のrailsアプリケーションは:mobile形式を使用して、モバイルデバイス用に最適化されたページをレンダリングします。Rails:ブロック特有のフォーマットに基づくアクション

いくつかのアクションでは、* .html.erbファイルに加えて、* .mobile.erbファイルがあります。

しかし、モバイルサイトで特定の操作を許可しない場合はどうすればよいですか?

たとえば、特定のリソースの場合、モバイルの場合は、[インデックス]と[表示]を実行できますが、[編集]や[新規]は実行できません。

これを行うにはどうすればよいですか?現在、私はedit.mobile.erbまたはnew.mobile.erbを持っていませんが、それは単に "Template Missing"エラーを示しています - あまり優雅ではありません。

提案がありますか?

答えて

1

params [:format]にアクセスして、そのアクションが特定のフォーマットに対して有効かどうかを調べることができます。そうでない場合は、カスタムエラーページをリダイレクトしたり、表示したりすることができます。

#..inside your controller.. 

def do_something 
    if !["html","xml"].include?(params[:format]) 
    #invalid format. do something 
    end 
    #..do other things 
end 
+0

OK、これは私がやることだと思います。私はRoutes.rbの特別なキーワードのように、何か優雅なrails-yを期待していました。 ホワイトリスト/ブラックリストのチェックを行うプライベートメソッドにマップする各コントローラのbefore_filterを置くことがあります。あなたの提案をありがとう! – James

関連する問題