복붙노트

[RUBY-ON-RAILS] 원격 => 사실이 호출되지 JS 방법 : form_for 레일

RUBY-ON-RAILS

원격 => 사실이 호출되지 JS 방법 : form_for 레일

나는 이것이 내가 레일을 배우고 나는 그것을 이런 식으로 할라는 책을 다음있어, 작동하지 않는 이유를 전혀 몰라 :

    <%= form_for([@article,@article.comments.new ], :remote=>true, :html => {:style=>'display: none;' }) do |f|%>
    <div class="field">
      <%=    f.label :name %>
      <%=    f.text_field :name %>
    </div>
    <div class="field">
      <%=    f.label :email %>
      <%=    f.text_field :email %>
    </div>
    <div class="field">
      <%=    f.label :body %>
      <%=    f.text_area :body %>
    </div>
    <%= f.submit %>
<% end %>

그러나 그것은하지 작업을 수행하고, 내가의 .js의 URL 나던 끝을 방화범 요청을 검사 할 때 당신은 어떤 아이디어 왜해야합니까?

해결법

  1. ==============================

    1.당신이 URL이의 .js로 끝나지 않았기 때문에, 불을 지르고에서 만든 요청을 확인하면,이 자바 스크립트에서 호출되지 않았 음을 의미하지 않는다. 당신이이 매개 변수가 동의를 알기 위해 요청 헤더를 확인해야합니다 있는지 확인합니다. 이 말한다면 "응용 프로그램 / 자바 스크립트는"그것은 모두 좋다.

    당신이 URL이의 .js로 끝나지 않았기 때문에, 불을 지르고에서 만든 요청을 확인하면,이 자바 스크립트에서 호출되지 않았 음을 의미하지 않는다. 당신이이 매개 변수가 동의를 알기 위해 요청 헤더를 확인해야합니다 있는지 확인합니다. 이 말한다면 "응용 프로그램 / 자바 스크립트는"그것은 모두 좋다.

    둘째, 사용해 시작하는 매우 일반적인 문제 : 원격는 => 사실은 필요한 자바 스크립트 라이브러리 코드에 포함되지 않습니다된다. 내 생각은 그래서 다음 코드 레이아웃에서 누락된다 :

    <%= javascript_include_tag :defaults %>
    <%= csrf_meta_tag %>
    

    그런 경우, 당신의 레이아웃의 태그 안에 그것을 포함한다.

  2. ==============================

    2.대부분의 경우 어떤 일이 당신의 rails.js 파일을 누락하는 것이 어느 처리하는 당신을 위해, 당신은 프로토 타입이나 jQuery를 사용하고 있는지.

    대부분의 경우 어떤 일이 당신의 rails.js 파일을 누락하는 것이 어느 처리하는 당신을 위해, 당신은 프로토 타입이나 jQuery를 사용하고 있는지.

    당신이 사용하는 jQuery를, 모든 필요한 파일을 얻을 수있는 가장 쉬운 방법을 사용하는 경우 보석을 jQuery를 - 레일. 이 JQuery와 및 필요한 rails.js를 설치하는 발전기를 추가합니다.

    당신의 레일 응용 프로그램 루트 내부에 뭔가를 입력 :

    rails g jquery:install
    

    그리고, 당신의 application.html.erb 내부의 줄을 추가

    <%= javascript_include_tag :defaults %>
    

    또는 명시 적으로 (별도로 jQuery를 포함하는 것을 잊지 마세요)

    <%= javascript_include_tag :rails, :application %>
    

    [편집 : 자산 파이프 라인을 사용하여 레일 3.1 이상에 대한]

    JQuery와 - 레일 보석을 사용합니다 (위에서 언급 한 바와 같이)과 (이미 존재하지 않는 경우) 응용 프로그램 / 자산 / 자바 스크립트 / application.js에 다음 줄을 추가합니다 :

    //= require jquery
    //= require jquery_ujs
    

    도움이 되었기를 바랍니다!

  3. ==============================

    3.당신의 /app/assets/javascript/application.js 파일을 확인

    당신의 /app/assets/javascript/application.js 파일을 확인

    그것은 거기에 파일 아래에 포함되어야한다. jquery_ujs는 => 원격 진정한 기능을 작동 할 책임이있다.

    require `jquery`
    require `jquery_ujs`
    

    코딩 해피!

  4. ==============================

    4.당신이 jquery_ujs 파일을 추가 할 때이 오류가 발생합니다. 당신은 JQuery와 파일을 포함.

    당신이 jquery_ujs 파일을 추가 할 때이 오류가 발생합니다. 당신은 JQuery와 파일을 포함.

    당신은 당신이 보거나 application.js 또는 특정 레이아웃에 사용하는 다른 파일을 필요에 수동으로 두 파일을 추가 할 필요가 그래서.

    시나리오에 따라 1 또는 2 해결 방법을 수행 할 수 있습니다.

    1cm 솔루션 :

    <%= javascript_include_tag :jquery, :jquery_ujs %>
    

    2 솔루션 :

    노트 :

    또한 두 솔루션에 대한 레이아웃 파일에 CSRF 태그를 추가합니다.

    <%= csrf_meta_tag %>
    

    나는 당신이 당신의 Gemfile에 코드 아래에 있고 이미 보석 설치 한 asuming하고있다.

    gem 'jquery-rails'
    
  5. ==============================

    5.컨트롤러를 확인 : 그것은 respond_to 블록이 있습니까?

    컨트롤러를 확인 : 그것은 respond_to 블록이 있습니까?

    당신이 스캐 폴딩 생성 레일을 사용하여 응용 프로그램을 생성 한 경우, 그것은 뭔가를해야합니다

        respond_to do |format|
          format.html
          format.xml  { .... }
        end
    

    그것을해야합니까, 그냥 끝까지 respond_to에서 전체 블록 아웃 걸릴; 또는 대안 적으로 하나의 라인 전체 블록을 대체

        respond_to :html, :js
    

    또는 대안 적으로 여기서 도시 여분 라인을 추가하여, 블록을 편집

        respond_to do |format|
          format.html
          format.js
          format.xml  { .... }
        end
    

    어느 귀하의 경우에 작동합니다.

  6. ==============================

    6.나는 어쩌면 다른 사람이 시간을 절약하기 위해이 답변을 추가하고, 그래서 해결책이 밖으로는 remotipart 보석을 사용하는 것을 볼, 나에게 작업에 오랜 시간이 걸렸습니다 - 사실 : 당신이 다음 file_field이있는 경우이 경우에도 원격, HTML로 제출 여기에 대한 대답

    나는 어쩌면 다른 사람이 시간을 절약하기 위해이 답변을 추가하고, 그래서 해결책이 밖으로는 remotipart 보석을 사용하는 것을 볼, 나에게 작업에 오랜 시간이 걸렸습니다 - 사실 : 당신이 다음 file_field이있는 경우이 경우에도 원격, HTML로 제출 여기에 대한 대답

  7. ==============================

    7.변화:

    변화:

    [@article,@article.comments.new ] 
    

    ...에 대한

    @article
    

    난 당신이 관련 섹션에있는 API를 읽고 제안 : http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html

  8. from https://stackoverflow.com/questions/4227775/rails-form-for-remote-true-is-not-calling-js-method by cc-by-sa and MIT license