rails 中,一个用ajax
方式提交(post)的表单,表单中包含文件上传字段的时候,提交表单会抛出异常;不包含文件上传字段的时候可以提交成功。 (文件上传使用的是carrierwave
)
异常如下:
大神们,这是为什么呀
------------------------------------------------------更新-------------------------------------------------------------------
其实我也没做多少,只是在 form_for
里添加了 remote: true
,当然也在 controller 的 create action 中做了处理。
现在的问题是,如果表单不传入文件字段的时候可以创建成功,如果表单传入文件字段,则报错
表单代码如下:
<%= form_for [:admin, video], remote: true, html: {class: "form-horizontal"} do |f|%>
<%= f.hidden_field(:course_id, value: @course.id) %>
<div class="form-group">
<%= f.label(:num, '视频序号',class: 'col-sm-2 control-label') %>
<div class="col-sm-10">
<%= f.text_field :num, class: 'form-control' %>
</div>
</div>
<div class="form-group">
<%= f.label(:name, '视频名称',class: 'col-sm-2 control-label') %>
<div class="col-sm-10">
<%= f.text_field :name, class: 'form-control' %>
</div>
</div>
<div class="form-group">
<%= f.label(:video, '视频文件',class: 'col-sm-2 control-label') %>
<div class="col-sm-10">
<%= f.file_field :video %>
<p class="help-block"><a href="" class="btn btn-default">上传</a></p>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<%= f.submit "提交", class: %w(btn btn-default) %>
</div>
</div>
<% end %>
controller
中的代码如下:
def create
course = Course.new(course_params)
if course.valid?
course.save
redirect_to admin_courses_path, notice: "创建成功!"
else
redirect_to new_admin_course_path, notice: course.errors.full_messages
end
end