0
私は、ProjectsControllerを乱雑にするのではなく、独自のリソースであるべきであるいくつかのアクションを統合するために、Snapshotという新しいリソースを作成しようとしています。私はすべてを正しく設定したと確信していますが、Railsはルートを認識しません。Railsルートは見つかりませんが、レーキルートに存在します
ここに私のroutes.rbをから関連の抜粋です:
resources :projects do
resources :snapshots, only: [:create, :update]
end
私はちょうど罰金rake routes
を実行したときにそれが現れます:
project_snapshots POST /projects/:project_id/snapshots(.:format) snapshots#create
project_snapshot PATCH /projects/:project_id/snapshots/:id(.:format) snapshots#update
PUT /projects/:project_id/snapshots/:id(.:format) snapshots#update
しかし、レールコンソールで、私はいずれかを得ることはありませんjoy:
r = Rails.application.routes
=> #<ActionDispatch::Routing::RouteSet:0x007faa06b5b730>
r.recognize_path "/projects/1234/snapshots"
ActionController::RoutingError: No route matches "/projects/1234/snapshots"
from /Users/merus/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/actionpack-4.2.0/lib/action_dispatch/routing/route_set.rb:840:in `recognize_path'
from (irb):4
from /Users/merus/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/console.rb:110:in `start'
from /Users/merus/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/console.rb:9:in `start'
from /Users/merus/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:68:in `console'
from /Users/merus/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/merus/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
「リソース」を「リソース」に置き換えようとしましたが、動作しない場合があります。サイコロはありません。ここで何が間違っていますか?
aware_pathのソースを確認してください。渡す環境で指定しないと、デフォルトではmethod = GETになります。ルートに定義されたそのシグネチャを持つGETメソッドはありません(PUT、POST、PATCHのみ)。私はそれを 'r.recognize_path"あなたのURLと呼ぶ必要があると思う "、方法:" PUT " – jaydel