Ruby on Rails
Monday, January 2, 2012
Well, you can't because you're not calling an instance method on every element of your array. data_file_name works because each ContractFile object has an attribute called data_file_name. So, you can call map() on files and collect every filename by specifying data_file_name. In contrast, url is an instance method you have to call on every PaperClip attachment and you can't give it as a symbol. You have to specify it this way:
> files.collect { |f| f.data.url }
2012/1/2 Nikolay <itsnikolay@gmail.com>
#gem 'rails', '3.0.9'
#gem "paperclip", "~> 2.0"
rails console
>contract = Contract.first
=> #<Contract id: 1, . . .
>files = contract.contract_files
=> [#<ContractFile id: 1, contract_id: 1, . . .
>files.first.data.url
=> "/system/data/1/original/logo.png?1325513082"
> files.map(&:data_file_name).each do |key| key end
=> ["logo.png", "newyearseve-2011-res.jpg", nil]
#IT WORKS FINE!
> files.map(&:data.url).each do |key| key end
=> NoMethodError: undefined method `url' for :data:Symbol
#IT DOESN'T WORK
Can you explain how to get access to "data.url" in has_many model?
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment