0

このガイドに従って、パブリック(デフォルト)ではなく、サーバー上の安全なディレクトリにファイルをアップロードする方法を学びました。ショーにアクセスしてリンクを表示しようとすると、次のようになります。

undefined method `redocument' for #<ActionView::Helpers::FormBuilder:0xa2ae338>
near: <%= link_to File.basename(f.redocument.url), "/uploads/#{f.id}/#{File.basename(f.redocument.url)}" %> 

リンクのレンダリングに問題があります。ここで何か不足していますか?このコードを 1 行ずつコピーしてはいけませんか? 「redocument」を置き換えるかどうかは指定されていませんが、モデル名は Entry で、ファイルのリンクが保存されている文字列は mv_link です。誰が修正が何であるか知っていますか?

更新:うまくいけば正しい方向に

「f.redocument」のすべてのケースを「@entry.mv_link」に変更しました。現在、ショーページにリンクがあります。しかし、それをクリックしてダウンロードしようとすると、コントローラーで指定されたパスが壊れています。コントローラーはこれでした

def download
  path = "/#{redocument.redocument}"
  send_file path, :x_sendfile=>true
end

このパスを何に変更すればよいですか?

4

1 に答える 1

2

OK、ここで手足を進めます...しかし、次のような設定があると思います:

class Entry < ActiveRecord::Base
  mounts_uploader :mv_link, YourUploaderClass
end

コントローラーで、エントリを見つけて、mv_link からパスを取得する必要があります。

def download
  @entry = Entry.find(params[:id])
  send_file @entry.mv_link.path, disposition: 'attachment', x_sendfile: true
end
于 2012-07-11T22:21:56.433 に答える