4

私はいくつかのjsonを提供するレールアプリに取り組んでおり、以下のコードで何が起こっているのか理解するのに苦労しています(問題を理解するために単純化されています)。

module Api
  class ProjectController < ApplicationController
    respond_to :json

    def show
       x = {"id"=>17, "name"=>"abc", "version"=>1}
       respond_with x.to_json, status: 200
    end

    def create
      x = {"id"=>17, "name"=>"abc", "version"=>1}
      respond_with x.to_json, status: 200
    end
  end
end

表示アクションは正常に機能しますが、作成アクションを呼び出すと取得されます

NoMethodError (未定義のメソッド '{"id":17,"name":"abc","version":1}_url' for Api::ProjectsController:0x007fbb2294cd18)

show は正常に動作しているのに、なぜこのエラーが発生するのですか? create が get ではなく post を作成するためですか?

どうすれば解決できますか?

ご協力いただきありがとうございます。良い一日をお過ごしください。

4

1 に答える 1

2

問題は、コントローラーがモジュール ( Api) 内にあることです。これは名前空間に影響を与えるため、ルーティングに影響します。に渡すものの一部としてその名前空間を含める必要がありますrespond_with

通常、私はこのstackoverflowの回答にあなたを案内します(クレジットはそこにあります)。ただし、モデルの代わりにハッシュを使用しているため、この回答の方が適切な場合があります。

..._urlRails がどのようにメソッドを呼び出そうとしているのかに注意してください。は...、JSON 形式のハッシュです。レンダリング方法については、ここで Rails を支援する必要があります。

于 2015-02-22T03:54:05.150 に答える