我刚接触过rails,我的表单中有一个图像字段。但我没有把它作为强制性领域。但是,当我试图绕过它并提交表单时,它显示错误。我在下面发布我的错误。
当我添加params [:contact]&& params [:contact] [:photo]我收到错误,因为它试图访问空的哈希,以避免我添加了params [:contact] [:photo] .original_filename =“empty.jpg”但是它也会抛出错误
ContactsController中的NoMethodError #create nil的未定义方法`original_filename':NilClass
private
def func
name=params[:contact][:photo].original_filename
directory= "public/data"
return path = File.join(directory,name) end
ContactsController中的TypeError #create 没有将nil隐式转换为String
def contact_params
File.open(func,"wb") { |f| f.write(params[:contact][:photo].read) }
params.require(:contact).permit(:firstname, :lastname, :gender, :email_id, :mobile_number, :address)
end
感谢您的耐心等待。
答案 0 :(得分:0)
在尝试访问控制器之前,检查params[:contact][:photo]
是否实际传递给控制器。
private
def func
if params[:contact] && params[:contact][:photo]
name=params[:contact][:photo].original_filename
directory= "public/data"
return path = File.join(directory,name)
else
return nil # or whatever you'd like to return if no filename is passed
end
end
端
我建议您查看Action Controller Rails Guide(和一般的Rails Guides)以获取更多信息。