我有一个带有表单的模态,在提交后没有验证错误我正在尝试关闭Modal并刷新页面并显示新结果。但我无法让它发挥作用。我有这个代码(Rails 3):
我的控制器:
def create
@stuff = Stuff.new(params[:stuff])
respond_to do |format|
if @stuff.save
format.js
else
format.js
end
end
end
_addModal.html.erb
<div id="addModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Label</h3>
</div>
<div class="modal-body">
<p>
<fieldset>
<label></label>
<%= render 'form2' %>
</fieldset>
</p>
</div>
</div>
_form2.html.erb
%= form_for(@stuff, :remote => true) do |f| %>
<% if @stuff.errors.any? %>
<div id="error_explanation">
<div class="alert">
<h2><%= @stuff.errors.count %></h2>
<ul>
<% @stuff.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
</div>
<% end %>
<%= f.label :name %><br />
<%= f.text_field :name %>
<%= f.submit %>
<% end %>
create.js.erb
<%- if @stuff.errors.any? %>
$('#addModal').html('<%= escape_javascript(render :partial => "form2") %>');
<%- else %>
$('#addModal').modal('hide').empty();
<%- end %>
我有什么想法可以让它发挥作用吗?
谢谢!
更新
我也有几个问题: 1)如果存在验证错误,create.js.erb仅返回带有“form2”内容的新模态 - 没有#addModal布局。我该如何解决?
2)成功完成后如何清除形式?
答案 0 :(得分:2)
在js.erb文件中添加此项以自动重新加载页面
<%- if @stuff.errors.any? %>
$('#addModal').html('<%= escape_javascript(render :partial => "form2") %>');
<%- else %>
$('#addModal').modal('hide').empty();
window.location.reload();
<%- end %>