일부 내 요청을 내 4 앱에서 아약스로 마이그레이션하는 중이고 리디렉션에 약간의 문제가 있습니다.PATCH 동사를 사용하여 redirect_to하지 않습니다.
홈 페이지에는 사용/사용 중지 할 수있는 항목 목록이 있습니다. 이것은 모든 내가 현재 사용자가 로그온 한 경우 확인하는 before_action
이 있고 ApplicationController
에서 한 개의 링크 <%= link_to "disable", toggle_my_class_path(my_class), method: "PATCH", remote: true %>
으로 돌보아되지는 형태의 로그가 표시되는 홈페이지로 리디렉션합니다.
def require_login
unless current_user
redirect_to root_url, :notice => "Please log in"
end
end
문제 때문에 어떻게 든 PATCH 동사를 대신 경로 문제의 원인이되는 GET으로 사용하고있는 아약스 호출 (내 생각)이다. 내가 모르겠어요 문제
입니다 : 아래 전화에서 내 로그 출력은
Started PATCH "/my_class/2/toggle" for 127.0.0.1 at 2014-04-10 16:33:52 -0500
Processing by MyClassController#toggle as JS
Parameters: {"id"=>"2"}
Can't verify CSRF token authenticity
(0.1ms) SELECT COUNT(*) FROM "users"
Redirected to http://localhost:3000/
Filter chain halted as :require_login rendered or redirected
Completed 302 Found in 9ms (ActiveRecord: 1.3ms)
Started PATCH "/" for 127.0.0.1 at 2014-04-10 16:33:56 -0500
ActionController::RoutingError (No route matches [PATCH] "/"):
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
/home/***/.rvm/rubies/ruby-head/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
/home/***/.rvm/rubies/ruby-head/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
/home/***/.rvm/rubies/ruby-head/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'
당신은 ActionController :: RoutingError (없음 경로 일치 [PATCH]를 "/") 것을 알 수있다 이것 주위의 길. PATCH
동사를 사용하고 싶지 않지만 동사를 지정하는 방법을 찾을 수없는 것 같습니다.
의견이 있으십니까?
당신은'ajax' 호출 내에서 서버 측 (컨트롤러)에서 리디렉션 할 수 없습니다 :
예를 들어, 당신은
before_action
(안 테스트 코드)를 변경할 수 있습니다. javascript를 통해 검색된 모든 내용이 javacript로 반환됩니다. 따라서 자바 스크립트를 사용하여 리디렉션을 수행해야합니다. – markets