0
Projectsroller를 어지럽히 기보다는 자체 리소스 여야하는 몇 가지 작업을 통합하기 위해 스냅 샷이라는 새로운 리소스를 만들려고합니다. 나는 모든 것을 올바르게 설정했다고 확신하지만 레일스는 경로를 인식하지 못합니다. 레일 경로를 찾을 수 없지만 레이크 경로에 존재합니다.
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
그러나 레일 콘솔에서
, 나는 어떤을하지 않습니다 내가 잘rake routes
을 실행할 때
resources :projects do
resources :snapshots, only: [:create, :update]
end
그것은 나타납니다 :
여기 내 routes.rb에서 관련 발췌 기쁨 :
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>'
작동하지 않는 경우를 대비하여 '리소스'를 '리소스'로 교체해 보았습니다. 주사위는 없다. 여기 뭐가 잘못 됐니?
인식 경로에 대한 소스를 확인하십시오. 당신이 전달하는 환경에서 그것을 지정하지 않으면 method = GET이 기본값이됩니다. 당신은 라우트에 정의 된 그 시그니처가있는 GET 메소드를 가지고 있지 않습니다 - PUT, POST 및 PATCH 만. 난 당신이'r.recognize_path "귀하의 URL로 전화를해야 의심,"방법 : "PUT"' – jaydel