我试图将一个部分包含在一个类似于此Rails Admin 的模态中 当你点击“创建语言”时。
现在因为我还没有真正发现代码是如何在那里工作的,所以我尝试在这个Rails - AJAX a Modal Dialog?之间进行混合。
问题是,部分现在呈现为模态。但是当我点击“保存”时,验证将返回到“正常”创建新视图,而不是直接在模态中显示验证错误。
如何直接在弹出模式中显示验证错误?
当我保存时,我应该以某种方式区分从这个模态和普通保存的保存,因为这个部分将从其他地方调用,并且需要将新创建的对象直接设置为一个新的对象。落下。我想我需要区分响应格式然后使用JS将新ID设置为DropDown id?
这里写了一些代码到目前为止。在我包含部分的视图中,它看起来像我调用另一个控制器(因为我在不同的控制器上 - 新视图)。
$.get('<%= url_for :controller => 'customers', :action => 'new' %>',
function(data) {
$('#customer-modal').html(data);
}
);
然后“customres”控制器中的new区分不同的请求格式并呈现不同的部分(在本例中为“_ajax_form.html.erb”):
if request.xhr?
render "_ajax_form", :layout => false
在这部分中,我使用“simple_form_for @customer,:remote =&gt; true do | f] ....”,所以我猜最后提交应该看起来与标准不同,因为这称为正常“在控制器上创建?
<div class="modal-footer">
<%= f.button :submit, :class => 'btn primary' %>
<a id='cancel-form' class= "btn small info">cancel</a>
</div>
感谢任何帮助澄清我做错了什么或者应该如何做,因为我在Rails和JS / AXAX方面的经验还不太有经验..;)
simple_form_for @customer, :url => url_for(:action => 'new_from_sale', :controller => 'customers') do |f|
然后在控制器中,当这个新对象的保存正常时,我重定向到第一个被调用的视图,其中新的id作为参数,然后填充下拉列表。在else的情况下,当无法保存新对象时,我需要以某种方式显示仍然在该模态中的错误。
到目前为止,两者都试图直接渲染部分render :partial => "customers/ajax_form"
或者回复JS代码render :js => "$('#sale_customer_id').val(#{@customer.id});"
还不行......但我会一直试着运气..
答案 0 :(得分:2)
以下是我为回答类似问题(Rails and modal jquery dialog form)而编写的模态形式的基本示例:
https://github.com/ramblex/modal-form
您需要将:remote => true
添加到加载到对话框中的表单中。这将导致JS格式从create动作呈现。然后,您可以在create.js.erb中处理响应。