谢谢两位
是的
1、通过 route 里面配置可以 force format 参数
2、通过资源格式可以决定 format
3、在 form 或者 link_to 等控件中加入 remote:true 参数,也会影响 format 参数(as JS)
我现在遇到的问题也就在这个 format 上:
背景:图片上传
Gems
gem 'mini_magick'
gem 'carrierwave'
Route
resources :images
在一个 form 中上传图片,提交方式采用 ajax 方式
Form 设定
form_for(@image, remote:true,
代码片段
<div class="field control-group">
<%= f.label "上传图片", class:"control-label" %>
<div class="controls">
<%= f.file_field :instance %>
</div>
</div>
问题:
如果不选择上传的图片文件,然后提交,跟预期一样,正常。这个时候的 format 是 JS,从以下可知道.
Processing by ImagesController#create as JS
但是一旦选择了要上传的图片文件,提交,format 就变成了 HTML,
Processing by ImagesController#create as HTML,
也就不能正常调用预期的 create.js.erb。
当然整个 action 正常运作,图片也已上传。
问题就是,我就不知道为什么选了要上传文件后,format 就变了,导致页面不能正常跳转。