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

时间:2018-08-19 22:05:43

标签: ruby-on-rails ajax ruby-on-rails-4 carrierwave simple-form

我有一个简单的表单,该表单还向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模板。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

仅对现在的回复表示抱歉。我确实尝试了上述所有建议的解决方案,但都没有碰到运气。将请求转出两次。 解决方案是将jquery_ujs换成rails-ujs,一切都很好。

来源:https://stackoverflow.com/a/44057260/5268472