使用属性名称访问我的carrierwave模型对象

时间:2012-10-08 21:40:06

标签: ruby-on-rails-3 haml carrierwave

我正在尝试使用部分渲染放置文件链接,如下所示:

#Main haml file
= render :partial => 'file_upload', :locals => {:f => f, :file_download => 'residence_cert'}
#Inside the partial
%a{:href => @postulant_info[file_download]}

但这只是与文件名建立链接,而不是文件的完整路径。然后意识到@postulant_info[file_download]只给我一个带文件名的字符串,而不是载波对象

-logger.debug @postulant_info.residence_cert #this is returning my carrierwave object -> 'DocumentUploader'
-logger.debug @postulant_info['residence_cert'] #but this one is just returning a String, the DB record with the file name

可以将一个解决方案放在渲染中作为像= render :partial => 'file_upload', :locals => {:f => f, :file_download => 'residence_cert', :url => @postulant_info.residence_cert.url}这样的本地,但我认为当部分模板中有属性名称时,“应该”是不必要的。
任何想法将不胜感激。提前致谢

2 个答案:

答案 0 :(得分:0)

我非常不确定你的问题究竟是什么,以及你想要实现的目标,但如果你想输出一个文件的链接,那么在你的部分

%a{:href => @postulant_info.residence_cert.url}

就够了。 @postulant_info.residence_cert会为您提供上传者的实例(DocumentUploader),#url方法会返回上传文件的完整网址

顺便说一下,你应该避免在你的部分中使用实例变量,部分应该使用的唯一变量是它已被赋予。

答案 1 :(得分:0)

最后我可以通过以下方式实现:

%a{:href => @postulant_info.send(file_download)}