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

时间:2011-11-20 21:02:56

标签: javascript ajax ruby-on-rails-3 modal-dialog partial

我试图将一个部分包含在一个类似于此Rails Admin 的模态中 当你点击“创建语言”时。

现在因为我还没有真正发现代码是如何在那里工作的,所以我尝试在这个Rails - AJAX a Modal Dialog?之间进行混合。

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

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

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

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

     $.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中调用一个名为“new_from_sale”的单独操作:

    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});"还不行......但我会一直试着运气..

1 个答案:

答案 0 :(得分:2)

以下是我为回答类似问题(Rails and modal jquery dialog form)而编写的模态形式的基本示例:

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

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