remote:true doen在一个模态中工作

时间:2017-04-07 17:26:05

标签: jquery ruby-on-rails ajax

所以我收到了一张remote: true的表单,当我在表单页面上时,它就像例外一样。

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

我有两个案例:

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进行模态显示。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,仍然试图弄清楚为什么 remote: true在一个模态中工作,但我能够得到相同的行为跳过{{ 1}}并手动添加remote: true来电。

所以,你也可以绕过这个;检查我在模式 1 中呈现的ajax部分中使用的这个(简化)代码:

_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> 上使用常规remote: true调用,打开一个呈现上述部分的模式。然后,在我发送表单的部分内,现在呼叫将再次作为form发送,因此我的js视图会正确呈现;在我的例子中只是一个新的模态内容:

js.erb

1 请注意使用$('#company-users-modal').html("<%= j(@new_content) %>"); 来简化。