반응형
Ruby on Rails 원격 확인 중: 실제 콜백
그래서 어떻게 설정해야 할지 검색해 봤는데, 결국 이 코드가 나왔습니다.
<script>
$('#reportform')
.bind("ajax:success", function(data, status, xhr) {
$('#reportalert').text('Done.');
});
.bind("ajax:error", function(xhr, status, error) {
$('#reportalert').text('Failed.');
});
</script>
<h2>Review Driver</h2>
<p>Fill out your review of the driver</p>
<div class="hero-unit form-signin" id="reportformdiv">
<%= form_for(@report, html: { id: "reportform" }, remote: true, update:
{ success: "response", failure: "error"} ) do |t| %>
<p id="reportalert"></p>
<%= t.text_field :plant_site, placeholder: "Plant Site" %>
<%= t.text_field :route_number, placeholder: "Route Number" %>
<%= t.text_field :driver_name, placeholder: "Driver name if available" %>
<%= t.date_select :date_recorded, html: { class: "input-block-level" } %>
<%= t.text_field :action, placeholder: "Action taken" %>
<%= t.text_area :report_body, placeholder: "What you witnessed",
style: "height: 300px;",
class: "input-block-level" %>
<%= t.submit "File Report", class: "btn btn-primary btn-large" %>
<% end %>
</div>
하지만 작동하지 않습니다. 제가 왜 잘못했는지 전혀 모르겠습니다. 저는 RoR이 처음이고 이 리모컨을 선언할 수 있다는 사실이 마음에 듭니다. 콜백을 설정하는 방법을 알게 되면 바로 사용할 수 있습니다. :) 미리 감사합니다.
Rails의 Wiki에 따르면 아래의 코드가 작동해야 합니다.
<script>
$(document).ready(function(){
$('#reportform').on('ajax:success', function(e, data, status, xhr){
$('#reportalert').text('Done.');
}).on('ajax:error',function(e, xhr, status, error){
$('#reportalert').text('Failed.');
});
});
</script>
레일즈 3.2.14와 jquery-rails 3.0.4에서도 비슷한 코드가 작동했습니다.
도움이 되길 바랍니다.
Rails 5.1 이후, 응답, 상태 및 xhr은 event.http://https://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#rails-ujs-event-handlers 를 통해 추출되어야 합니다.
다음은 가능한 솔루션 중 하나입니다.
$(document).on('ajax:success', '#reportform', event => {
const [response, status, xhr] = event.detail;
});
터보링크 호환
<script type="text/javascript">
$(document).on('ajax:success', 'a[data-remote].watching', function(e, data, status, xhr){
});
</script>
사용해 보십시오.
Javascript 코드를 입력합니다.document ready
:
<script>
$(document).ready(function(){
$('#reportform')
.bind("ajax:success", function(data, status, xhr) {
$('#reportalert').text('Done.');
});
.bind("ajax:error", function(xhr, status, error) {
$('#reportalert').text('Failed.');
});
})
</script>
jQuery를 사용할 필요가 없습니다.할 수 있는 일:
document.querySelector('#reportform')
.addEventListener("ajax:success", function(data, status, xhr) {
document.querySelector('#reportform').text('Done.');
});
.addEventListener("ajax:error", function(xhr, status, error) {
document.querySelector('#reportform').text('Failed.');
});
언급URL : https://stackoverflow.com/questions/15395105/trying-to-figure-out-ruby-on-rails-remote-true-callbacks
반응형
'programing' 카테고리의 다른 글
테이블에서 두 개의 날짜 시간을 요청하지만 하나만 받는 경우 (0) | 2023.08.08 |
---|---|
nginx 502 잘못된 게이트웨이 (0) | 2023.08.08 |
PowerShell - 조건부 연산자 (0) | 2023.08.08 |
대량 수집이 있는 테이블 함수가 잘못된 데이터 유형을 슬로우함 (0) | 2023.08.08 |
수퍼 애그리게이트 행에서 "NULL" 값을 유지하면서 "롤업을 사용한 그룹" 열 이름을 변경하려면 어떻게 합니까? (0) | 2023.08.08 |