Undefined AWS :: S3 при определении метода в помощнике

I am following this tutorial http://net.tutsplus.com/tutorials/create-a-simple-music-streaming-app-with-ruby-on-rails/, but use the aws_sdk instead of aws_s3. I see basically they do the same thing. In the download part, I put the the download function into the model and it did show correctly the url to download, but from there I don't know how to trigger download so I moved the function to the helper and invoke it straight from view. From there rails keep complaining about undefined method `model_name' for URI::HTTPS:Class

Это метод загрузки

def download song_key
  bucket = AWS::S3.new.buckets['mybucket'] # error from this line because undefined AWS::S3
  song = bucket.objects[song_key]
  song.url_for(:read, expires: 10*60)
end 

Это мнения

<% @songs.each do |song| %>
  <%= link_to "download", download(song.key) %>
<% end %>

Любая идея, как это исправить? благодаря

1
nl ja de

1 ответы

Вы неправильно читаете трассировку стека - это не ваш вспомогательный метод, создающий исключение, а нечто внутри link_to .

Метод url_for возвращает экземпляр URI :: HTTPS . Когда второй аргумент link_to - это нечто иное, чем строка, он предполагает, что это класс activemodel и пытается найти подходящий маршрут. Например, если вы это сделаете

link_to 'Show', person

и человек является экземпляром Person, link_to в конечном итоге будет генерировать URL из person_path (person) .

URI не являются активной моделью, поэтому этот процесс поиска подходящего маршрута не выполняется. Все, что вам нужно сделать, это включить URI в строку, например

def download_url song_key
  bucket = AWS::S3.new.buckets['mybucket'] # error from this line because undefined AWS::S3
  song = bucket.objects[song_key]
  song.url_for(:read, expires: 10*60).to_s
end 

По-видимому, эквивалентный метод в aws_s3, возвращающий строки, а не объекты URI, который является qhy учебником, вы следуете, не делает этого.

3
добавлено
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff