link_to에서 갑자기 방법이 효과가 없어지고 곤란한 당신에게

3443 단어 Rails4

최근에 있었던 것



Rails에서 devise를 사용하여 사인 아웃 링크를 붙여서 페이지 전환이 발생하지 않았습니다.



서버 로그를 확인하면 ......

Started GET "/users/sign_out"for::1 at 2016-03-19 13:32:29 +0900

GET으로 액세스하고 있습니다.

현재 상태



_header.html.haml
%ul.dropdown-menu{:role => "menu"}
  %li
    = link_to 'マイページへ', user_path(current_user)
  %li
    = link_to 'サインアウト', destroy_user_session_path, method: :delete

제대로 써 있다.

원인



작업 도중에 읽어야 할 파일의 require를 지웠다.
(Rails이면 원래부터 기술하고 있을 것)

(오)

application.js
//= require jquery
//= require turbolinks
//= require bootstrap

(정)

application.js
//= require jquery
//= require jquery_ujs ←こいつが必要
//= require turbolinks
//= require bootstrap

이게 뭐야?



jquery_ujs
Ruby on Rails unobtrusive scripting adapter for jQuery

· force confirmation dialogs for various actions;
· make non-GET requests from hyperlinks;
· make forms or hyperlinks submit data asynchronously with Ajax;
· have submit buttons become automatically disabled on form submit to prevent double-clicking.

그래! ! (다음은 번역해)

이번 이야기에서 말하면 위에서 두 번째

· make non-GET requests from hyperlinks;

GET 이외의 하이퍼링크를 연결해주는 것 같다.

These features are achieved by adding certain "data"attributes to your HTML markup.

data 속성이 풍부하기 때문에 실제로 이전의 HTML

headernohtml.html
<li>
  <a rel="nofollow" data-method="delete" href="/users/sign_out">サインアウト</a>
</li>

data-method 속성에 좋은 느낌으로 지정해주는 것 같습니다.

소감



Rails만 농락하고 있으면, 이런 곳이 마음대로 잘 된다고 생각했기 때문에 무섭다고 생각했다. 앞으로는 Rails의 내용도 참아 놀아 가고 싶다.

참고로 한 사이트



Ruby on Rails unobtrusive scripting adapter for jQuery
TechRacho link_to의 method가 효과가 없다! ?

좋은 웹페이지 즐겨찾기