1

Я пытаюсь проверить DEA-номер, вызвав действие, которое вызывает проверку gem.Rails flash-сообщение не отображается

Вот вид

<label for="prescriber_dea_number">DEA number</label> 
    <%= text_field_tag :prescriber_dea_number %> 
    <%= link_to "Verify DEA number", dea_verification_insight_reports_prescriber_activity_with_patient_request_index_path remote:true %> 

Вот действия контроллера

def dea_verification 
dea = params[:prescriber_dea_number] 
respond_to do |format| 
    if PmpCheckdigit.dea_number?(dea) 
    #flash confirmation 
    flash[:notice] = "DEA number is valid" 
    format.js 
    else 
    #flash error 
    flash[:error] = "DEA number is invalid, Expected something similar to 'AB12345678'" 
    format.js 
    end 
end 
end 

Когда кнопка для проверки нажата, на странице

Здесь не появляется вспышка сообщение что я получаю в лог

Started GET "/insight_reports/prescriber_activity_with_patient_request/dea_verification" for 127.0.0.1 at 2015-07-30 17:15:34 -0400 

AbstractController::ActionNotFound (The action 'show' could not be found for InsightReports::PrescriberActivityWithPatientRequestController): 

UPDATE: Я меняю в яваскрипта функции и пирог

Вот функция JS

$('#add_prescriber_dea_number').on('click', function() { 
    var input = $("#prescriber_dea_number"); 
    console.log(input); 
    var data = input.val(); 
    console.log(data); 
    if (data == /^[a-zA-Z]{2}\d{7}$/ || data == /^[a-zA-Z]\d{8}$/){ 
    result = parseInt(data.charAt(2)) + parseInt(data.charAt(4)) + parseInt(data.charAt(6)) + 
    ((parseInt(data.charAt(3)) + parseInt(data.charAt(5)) + parseInt(data.charAt(7))) * 2); 
    if (result[-1] == parseInt(data[8])){ 
     //valid 
     alert('valid') 
    } 
    } 
    else{ 
    //not valid 
    alert('not valid') 
    } 
}); 

Вот Просмотр фрагмента

 <%= text_field_tag :dea, '', 'data-id-search-key' => 'employer_dea', id: "prescriber_dea_number" %> 
     <%= render partial:"/shared/spinner", locals:{size:'small'} %> 
     <button class="btn btn-info" type="button" id='add_prescriber_dea_number'> 
      <i class="icon-plus icon-white"></i>Verify</button> 
+0

Вы пропускаете запятую в link_to, он должен быть: <% = link_to «Проверка DEA номер», dea_verification_insight_reports_prescriber_activity_with_patient_request_index_path, удаленный: истинный%> –

+1

Кроме того, рекомендуется использовать более короткие имена маршрутов –

ответ

1

Я не думаю, что флэш-сообщения работайте над запросами AJAX, вы должны ответить JSON как {сообщение: «DEA number valid»} и уловить этот ответ с помощью javascript в браузере.

+0

Это верно - только быстрые сообщения работать с полными серверными запросами, а не с Ajax. Кроме того, вы можете создать сообщение «flash like» в вашем. .js.erb. –

+0

Я собираюсь изменить функциональность, чтобы использовать функцию JS и popover –

0

Вам необходимо создать .js.erb (в вашем случае, вероятно, dea_verification.js.erb) в соответствующей папке представлений, чтобы обновить html, где должно отображаться сообщение. Возможно, он уже существует, если раньше у вас была функция ajax. Вы можете обновить свое сообщение с чем-то вроде:

$("#flash_message").html("<%= flash[:error] %>"); 

Вам может понадобиться, чтобы добавить логику в файле js.erb для обработки ошибок и уведомлений по-другому.

Кроме того, я думаю, что вы забыли объявить маршрут для своего действия (при условии, что он называется «dea_verification»). Ваше приложение пытается перенаправить ваш запрос на действие «показать» с идентификатором «dea_verification». И в этом причина вашей ошибки.

Смежные вопросы