Rails 4不使用Remotipart远程提交表单

9

看起来Remotipart并没有被用于提交我的表单,因此当我查看提交到的表单参数时,图片完全被省略了。

remotipart_submitted?返回false

参数:{"utf8" => "✓", "product" => {"name" => "RemotipartFails", "price" => "10", "description" => "请工作"}, "action" => "create", "controller" => "products"}

以下是更相关的代码

Gems

gem "jquery-rails"
gem "remotipart", "~> 1.2"

Javascript

//= require jquery
//= require jquery_ujs
//= require jquery.remotipart

表单

<%= form_for(:product, url: products_path, remote: true, html: { multipart: true, class: "form-horizontal" }) do |f| %>
  <div class="margin-top-10 margin-bottom-10">
    <div class="input-left">
      <%= f.text_field :name, { placeholder: "Name", class: "form-control" } %>
    </div>
    <div class="input-right">
      <%= f.number_field :price, { placeholder: "Price", class: "form-control" } %>
    </div>
    <div class="clearfix margin-bottom-10"></div>
    <div class="input-full">
      <%= f.text_field :description, { placeholder: "Description", class: "form-control" } %>
    </div>
    <div class="clearfix margin-bottom-10"></div>
    <div class="input-full">
      <%= f.file_field :image, { class: "form-control" } %>
    </div>
    <div class="clearfix margin-bottom-10"></div>
    <%= f.submit "Add Product", class: "btn btn-green" %>
  </div>
<% end %>

我尝试过不加上 multipart: true,因为我认为 form_for 会自动添加它,但这并没有帮助。
目前,我愿意尝试替代方案(希望仍然能够远程提交带有图像的表单)。

你有没有找到解决办法?我也遇到了同样的问题。:( - Swaathi Kakarla
@SwaathiK 不完全正确,我在他们的Github上添加了一个问题,但他们从未回应。我在那里提供了一个替代库:https://github.com/JangoSteve/remotipart/issues/109 - Tom Prats
太好了!谢谢。但是我刚刚尝试了一下,没有使用任何 gem,只是使用了 remote true。虽然我有 jquery 文件上传,但它似乎可以正常工作。表单通过 AJAX 提交。这正确吗? - Swaathi Kakarla
我遇到了同样的问题,并尝试了https://github.com/JangoSteve/remotipart/issues/109中建议的所有方法。但是我离解决方案还很远。 - Amit Patel
好的,我不知道为什么在Github问题中没有答案,但是当我尝试使用与Rails 4.2.6中问题中完全相同的字段时,这似乎对我有效。@TMP,你能检查一下它是否对你有效吗?或者让我知道我可以做些什么来证明它有效? - Brian Russel Davis
显示剩余3条评论
1个回答

0
以下代码可以让我通过带有图像的ajax提交表单。即使它是form_tag,也可以轻松地更改为form_for语法。
<!--In View-->
<%= javascript_include_tag "jquery", "jquery_ujs", "jquery.remotipart"%>

<%= form_tag({:controller=>controller,:action=>action},{:method => 'post' ,:name=>'upload-data',:id=>'upload-data', :multipart => true, :target =>'upload_frame' }) do -%>
          <!--Form fields here-->
<%end %>

<script type="text/javascript">
 $("#upload_frame").load(function() {
   var responseText = $("#upload_frame").contents().find('body').html();
   if(responseText != ""){
     $("#element_to_update").html(responseText);
   }
 });
</script>

我希望这对于遇到问题的人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接