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
,现在一切正常。
来源:
我有一个简单的表单,它还向 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
,现在一切正常。
来源: