Rails 3.2.8. このルートがある場合:
namespace :some_module do
resources :some_models
end
そして、対応する SomeModel はモジュールではなく、 SomeModule::SomeModelsController でモデル インスタンスとして場所を指定すると (作成のように)、URL に関する仮定が間違ってしまいます。
respond_with @some_model, location: @some_model
URL が some_module_some_model_instance_url ではなく some_model_instance_url であると想定するためです。
何らかの理由で、トリッキーになり、create メソッドで正しい URL と思われるものを一般的に評価しようとすると (これはコントローラーに含めるための一般的なモジュールにあるため):
respond_with @some_model, location: send("#{self.class.name.chomp('Controller').gsub('::','_').underscore.singularize}_url")
結果は次のようになります: No route matches {:action=>"show", :controller=>"some_module/some_models"}
(これは複数なので、ルートはありません)
これはちょっと混乱しているようです。
しかし、やっているだけです:
respond_with @some_model
コントローラーが json で応答するように設定されている場合:
respond_to :json
私にとっては、作成されたインスタンスの ID を示さずに 204 を返します。クライアントがそれを利用するには、ID を含む何らかの指示が必要なようです (ID を返さずに何かを作成することはお勧めできません)。
モデルとは異なるモジュールにあるコントローラーの create メソッドで Respond_with を使用する正しい方法は何ですか?作成されたオブジェクトの ID の表示を返したいですか?