我有一个模型的simple_form。新动作的形式基本如下:
<%= simple_form_for @patient do |f| %>
.... fields
<% end %>
我想在New
视图中使用此表单,但也使用AJAX的引导模式。如果我使用这种语法:
<%= render partial: 'patients/form', locals: {patient: @patient, remote: true} %>
但是当我这样做时,我只能使用远程访问本地变量,而不是@remote,这将在new
视图中呈现错误。
修改
对部分的调用:
<%= render partial: 'patients/form', locals: {patient: @patient, remote: true } %>
形式:
<%= simple_form_for @patient, remote: @remote do |f| %>
.... fields
<% end %>
有什么方法可以做到这一点? 谢谢!
答案 0 :(得分:1)
您可以将 request
作为Ajax
发送到模式,并form
使用remote: request.xhr?
以便您可以将表单用于Ajax和非-Ajax调用。
<a href="#" class="btn btn-warning btn-sm" data-remote="true" data-toggle="modal" data-target="#modalAddPatient">Add new patient</a>
以表格
#form
<%= simple_form_for @patient, remote: request.xhr? do |f| %>
.... fields
<% end %>
request.xhr?
如果true
为request
则返回Ajax request
,否则返回false
。所以Ajax调用remote: true
和非Ajax调用remote: false
。
<强> 更新 强>
确定。不知何故,上述方法对你没有用。尝试以下方法
在调用部分
时定义局部变量<%= render partial: 'patients/form', locals: {patient: @patient, modal: true} %>
以表格
<% modal ||= false %>
<% remote = modal ? true : false %>
<%= simple_form_for @patient, remote: remote do |f| %>
.... fields
<% end %>