远程:真正的 doen 无法在模态内工作



所以我得到了一个带有remote: true的表单,当我在表单页面上时,它的工作除外。

但是这种形式应该是模态。当我在不起作用的模态中尝试表单时。

我有 2 个案例:

form_for(@report, remote: true, method: 'post')

这抛出了一个错误,因为它正在寻找一个 html 模板:

ReportsController#create is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: []

form_for(@report, format: "js", remote: true, method: 'post')

只需点击 js 视图的链接即可。

我很确定这个错误是由于我异步加载这个表单的事实:

$.ajax({ url: "/form/url" })

但是我不知道该怎么办。

作为补充信息,我使用 Vex lib 进行模态显示。

我遇到了同样的问题,并且仍然试图弄清楚为什么remote: true无法在模态中工作,但我能够获得相同的行为跳过remote: true并手动添加ajax调用。

所以,你也可以解决这个问题;检查我在模态1 中呈现的_form.html.erb部分中使用的这个(减少的(代码:

<div>
  <%= form_tag company_users_url, id: "company-users-form" do |f| %>
    Select file: <%= file_field_tag :file %>
    <%= submit_tag "Send" %>
  <% end %>
<div>
<script>
  $("#company-users-form").submit(function(event){   
    event.preventDefault();
    var formData = new FormData($(this)[0]);
    $.ajax({
      url: '<%= company_users_url %>',
      type: 'POST',
      data: formData,
      async: false,
      cache: false,
      contentType: false,
      enctype: 'multipart/form-data',
      processData: false
    });
    return false;
  });
</script>

通过此设置,我首先在打开呈现上述部分的模式的form上使用常规remote: true调用。然后,在我发送表单的部分内,现在调用再次作为js发送,因此我的js.erb视图正确呈现;就我而言,只是带有新模态内容的一行:

$('#company-users-modal').html("<%= j(@new_content) %>");

1为简单起见,请注意使用 formData

最新更新