Rails偏模态(渲染不同模型的偏模)

Rails partial in modal (render partial from different model)

本文关键字:模型 模态 Rails      更新时间:2023-09-26

我试图将部分包含到一个模态类似于这个Rails管理当你点击"创建语言"

现在,因为我还没有真正发现如何在那里的代码工作,我试图做这个Rails之间的混合- AJAX模态对话框?和自己的东西。

问题是,局部现在被渲染到模态。但是当我点击"保存"时,验证将返回到"正常"的新建视图,而不是直接在模态中显示验证错误。

  1. 我怎么能直接显示弹出模式的验证错误?

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

这里是目前为止写的一些代码。在我包含部分的视图中,它看起来像这样,我调用另一个控制器(因为我在不同的控制器-new-view上)。
 $.get('<%= url_for :controller => 'customers', :action => 'new' %>',
            function(data) {
                $('#customer-modal').html(data);
            }
    );

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

if request.xhr?
  render "_ajax_form", :layout => false

在这个部分中,我使用"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>

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

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

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

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

这里有一个基本的例子,我如何做一个模态表单,我写了一个类似的问题(Rails和jquery模态对话框表单):

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

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