如何将照片字段设置为非强制性

时间:2014-06-25 14:26:30

标签: ruby-on-rails validation

我刚接触过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

感谢您的耐心等待。

1 个答案:

答案 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)以获取更多信息。