所以我有一个表格,可以将代码添加到 Rails 中的约会中。有两种类型的代码,直接添加到 apt 的常规代码和返回包含查询的代码列表的通配符代码(例如 800* 返回任何包含 800 的代码)。
我需要做的是将任何常规代码添加到约会中,如果没有选择通配符代码,则返回约会页面。如果选择了通配符代码,我需要渲染一个与搜索结果一起切换的部分。如果同时选择了通配符和常规代码,我需要切换滑块,但还要在页面上的代码表上更新常规代码。
我遇到的问题是,当只选择常规代码时,toggleslide 仍然被调用并在其中填充了约会页面。
我将执行此操作的表单设置为远程,并且在 js 文件中我让 ajax 响应执行切换幻灯片并用响应填充它。如果没有选择通配符代码,有没有办法覆盖控制器中的 ajax 响应并重定向到约会页面?
还是有更好的方法来完成这一切?我尝试使用 js 模板,但不断收到 406 错误。或者我通过删除任何 respond_to 调用来修复 406 错误,但不会调用 toggleslide。
在我的资产中的 js 文件中。
$(document).ready(function() {
$("#custom_codes_form_1").on("ajax:success", function(e, data, status, xhr) {
$('#my_lists_modal_1').hide();
$('#search_code_results').html(data);
$('html, body').animate({ scrollTop: 0 }, 'slow');
$('#search_code_results').show('blind', {direction: "left"});
});
return false;
});
在我的控制器中。@all_codes 是搜索查询返回的代码列表。这是在 add_code_list_codes 方法中:
if !@all_codes.nil?
render :partial => "/encounter/code_search_results", :content_type => 'text/html', :locals => {:codes => @codes, :apt => @apt, :all_codes => @all_codes, :diagnoses_search => true, :type => @type}
else
respond_to do |format|
format.html {redirect_to encounter_show_path(:id => @apt.id)}
end
end
这是表格。
<%= form_tag({:controller => :encounter, :action => :add_code_list_codes, :id => @apt.id}, :class => 'form-horizontal', :id => "custom_codes_form_#{cl.id}", :remote => true ) do %>
<% CodeType.by_name.all.each do |ct| %>
<h4 class="small_bottom_margin"><%= ct.display_name %></h4>
<div class="control-group">
<% cl.code_list_items.all_by_code_type(ct.id).each do |cc| %>
<%= label_tag :codes, :class => 'checkbox' do %>
<% if cc.code %>
<%= check_box_tag 'codes[]', cc.id %> <strong><%= cc.code.code %></strong> - <%= cc.name_override ? cc.name_override : cc.code.name %>
<% else %>
<%= check_box_tag 'codes[]', cc.id %> <strong><%= cc.search_criteria %></strong> - Wildcard
<% end %>
<% end %>
<% end %>
</div>
<% end %>
<%= submit_tag("Add Selected Charges", :class => 'btn', 'data-disable-with' => "Adding Charges") %>
<% end %>