Rails:使用 CarrierWave 作为 JS 而不是 HTML 的处理表单

Rails: Process form with CarrierWave as JS and not HTML

我有一个简单的表单,它还向 CarrierWave 添加了一个文件。

<%= simple_form_for @person, url: { controller: 'posts', action: 'create'}, remote: true do |f| %>
  <%= f.input :name %>
  <%= f.simple_fields_for :image_name do |i| %>
    <%= i.input :file %>
  <% end %>
  <div class="form-actions">
     <%= f.submit "Add New Person" %>
  </div>
<% end %>

镜像安装在PersonImages < ActiveRecord::Base

PersonController我有

def new
  @person = Person.new
  @person.build_person_image
end

和..

def create
  @person = Person.new(person_params)

  if @ship.save
    @persons = Person.all
    render :person_list and return
  end
end

如果我只在人名字段中输入姓名并提交就可以了。 注意远程请求。 控制台:Processing by PersonController#create as JS

部分人员列表已渲染。

但是,如果我还添加图像文件,则会失败。 注意剩下的不再是远程了。

Console: `Processing by PersonController#create as HTML`

图像已成功上传、处理和保存,但是 Rails 现在想要呈现 persons/create html 模板而不是 persons/create.js.erb 模板。

有什么想法吗?

抱歉现在才回复。我确实尝试了上述所有建议的解决方案,但没有成功。原来请求被提出了两次。 解决方案是将 jquery_ujs 换成 rails-ujs,现在一切正常。

来源: