controller 中:
def update
@product = Product.find(params[:id])
unless request.get? ##1
filename=uploadfile(product_params[:image_url]) ##2
end ##3
puts @product.name
puts product_params
if @product.update(product_params)
redirect_to admins_products_path
else
render 'edit'
end
end
edit.html.erb 页面:
<%= form_for @product, id: "update_product", url: admins_product_path do |f|%>
<table border="1">
<tr>
<td>
产品名称
</td>
<td>
<%= f.text_field :name %>
</td>
</tr>
<tr> ##4
<td>##5
产品图片##6
</td> ##7
<td>##8
<%= f.file_field :image_url %>##9
</td>##10
</tr>##11
<tr>
<td>
产品价格
</td>
<td>
<%= f.text_field :price %>
</td>
</tr>
<tr>
<td>
产品描述
</td>
<td>
<%= f.text_area :description %>
</td>
</tr>
<tr>
<td>
<input type="submit" value="提交">
</td>
</tr>
</table>
<% end %>
说明:这里实现的就是 products 管理的功能,在产品创建的时候,图片能够正确提交。 问题:当我执行修改的时候,会出现错误:undefined method `name' for nil:NilClass 查看 log 发现:##3 之后的两个 puts 都有数据: 44444 {"name"=>"44444", "description"=>"3dsfs", "image_url"=>#, @original_filename="1111.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"product[image_url]\"; filename=\"1111.jpg\"\r\nContent-Type: image/jpeg\r\n">, "price"=>"98.0"}
当我把行##1、2、3、4、5、6、7、8、9、10 都给删除了,就能够正确提交,也就是把图片处理这一块给删除掉
这个异常如何解决呢?