2012-07-11 2 views
0

다음은 this guide에이어서 공개 (기본값)가 아닌 내 서버의 보안 디렉토리에 파일 업로드를 수행하는 방법을 학습했습니다. 쇼를 보려고 링크를 보려고하면 다음과 같이 표시됩니다.Carrierwave 실패 (제작)로 보안 디렉토리 파일 업로드

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

링크를 렌더링하는 데 문제가 있습니다. 내가 여기서 뭔가를 놓치고 있니? 이 코드를 한 줄씩 복사하지 않겠습니까? 그들은 'redocument'를 대체해야하는지 여부를 지정하지 않지만 내 모델 이름은 Entry이며 파일 링크가 저장되는 문자열은 mv_link입니다. 누구든지 수정 사항이 무엇인지 알 수 있습니까?

업데이트 : 희망이 올바른 방향

에서 나는 '@의 entry.mv_link'에 'f.redocument'의 모든 경우를 변경했습니다. 이제 쇼 페이지에서 링크가 있습니다. 그러나 그것을 클릭하고 다운로드하려고하면 컨트롤러가 지정한 경로가 끊어집니다. 컨트롤러가 무엇입니까

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

이 경로는 어떻게 변경해야합니까?

+0

이 형식입니까, f는 양식 개체입니까? 그렇다면'f.object.redocument.url'을 시도해보십시오. –

+0

실제로 이것은보기에 있습니다 ...이 안내서의 마지막 줄에서했던 것과 같습니다. – MoB

+1

오류는 양식에 있음을 나타내고 f는 양식 작성기 객체임을 나타냅니다. 당신은 형태가 없다는 것이 긍정적입니까? 'f' 변수는 무엇입니까? –

답변

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 
+0

잘 했어 내 친구. 처분 : '첨부 파일'은 무엇을합니까? 나는 그것을 추가하지 않았지만, 어쨌든 여전히 효과가있다. 광산도 포맷 : x_sendfile => true. 고마워, 내가 찾고 있던 해결책이다. – MoB