Rails偏模态(从不同模型渲染部分)

fis*_*sco 5 javascript ajax modal-dialog partial ruby-on-rails-3

当你点击"创建语言"时,我试图将一个部分包含在类似于这个Rails Admin的模态中.

现在因为我还没有真正发现代码是如何工作的,我试着在这个Rails - AJAX模态对话框之间进行混合和某些东西.

问题是,部分现在呈现为模态.但是当我点击"保存"时,验证将返回到"正常"创建新视图,而不是直接在模态中显示验证错误.

  1. 如何直接在弹出模式中显示验证错误?

  2. 当我保存时,我应该以某种方式区分这个模态的保存和普通保存,因为这个部分将从其他地方调用,并且需要将新创建的对象直接设置为下拉列表中的新对象.我想我需要区分响应格式然后使用JS将新ID设置为DropDown id?

这里写了一些代码到目前为止.在我包含部分的视图中,它看起来像我调用另一个控制器(因为我在不同的控制器 - 新视图).

 $.get('<%= url_for :controller => 'customers', :action => 'new' %>',
            function(data) {
                $('#customer-modal').html(data);
            }
    );
Run Code Online (Sandbox Code Playgroud)

然后,"customres"控制器中的new区分不同的请求格式并呈现不同的部分(在本例中为"_ajax_form.html.erb"):

if request.xhr?
  render "_ajax_form", :layout => false
Run Code Online (Sandbox Code Playgroud)

在这部分中,我使用"simple_form_for @customer,:remote => true do | f] ....",所以我猜最后提交应该看起来与标准不同,因为这称为正常的"创建"控制器?

<div class="modal-footer">
    <%= f.button :submit, :class => 'btn primary' %>
    <a id='cancel-form' class= "btn small info">cancel</a>
  </div>
Run Code Online (Sandbox Code Playgroud)

感谢任何帮助澄清我做错了什么或者应该怎么做,因为我在Rails和JS/AXAX方面的经验还不太有经验..;)

  • 编辑:我现在有一个版本,在我的特殊部分中加载了模态,将在simple_form_for中调用一个名为"new_from_sale"的单独操作:

simple_form_for @customer, :url => url_for(:action => 'new_from_sale', :controller => 'customers') do |f|

然后在控制器中,当这个新对象的保存正常时,我重定向到第一个被调用的视图,其中新的id作为param然后填充下拉列表.在else的情况下,当无法保存新对象时,我需要以某种方式显示仍然在该模态中的错误.到目前为止,两者都试图直接渲染部分render :partial => "customers/ajax_form"或回馈JS代码render :js => "$('#sale_customer_id').val(#{@customer.id});"还没有工作..但我会继续试试我的运气..

ram*_*lex 2

下面是我为回答类似问题( Rails 和模态 jquery 对话框表单)而编写的模态表单的基本示例:

https://github.com/ramblex/modal-form

您需要添加:remote => true到加载到对话框中的表单。这将导致 JS 格式从创建操作中呈现。然后,您可以在 create.js.erb 中处理响应。