2011-05-06 8 views
3

/public/my_dir_for_data에 저장된 에 대한 데이터를 표시 할 수 있는지 묻고 싶습니다.ruby ​​on rails - 공개 디렉토리에 액세스하는 중 오류가 발생했습니다.

이 디렉토리에서 이미지를 표시하려고하면 "라우팅 오류"가 발생합니다. 아마도 내 응용 프로그램의 루트에 데이터를 저장하려고했을 때, 예를 들어. /my_data,

, 어떻게 어떤 방식으로 존재 ... 모든 것이 확인 될 것입니다 ...하지만 난 RoR에 응용 프로그램의 구조를 좋아하고 나는 /공공 디렉토리를 사용하려면 수 있다면, 기꺼이 것 할 것? (동시에 보안입니까?)

+0

이미지를 표시하고 표시하는 데 사용하는 코드는 무엇입니까? –

+0

아니요, 코드를 사용하지 않고 있습니다. 브라우저에 http://www.domain.com/my_dir_for_data/example.png을 씁니다. 레일스는 "my_dir_for_data"가 컨트롤러라고 생각합니다. –

답변

5

파일이 있으면 레일즈가 컨트롤러 스택에 들어 가지 않습니다. 파일을 찾을 수 없으면 동적 동작이고 컨트롤러 스택으로 이동합니다.

따라서 파일이 #{Rails.root}/public/directory/file.png에 있고 domain.com/directory/file.png으로 이동하면 파일을 렌더링해야합니다.

모든 디렉토리와 파일 이름이 양쪽 모두 동일합니까?

0

위의 문제는 config/environment/production.rb 파일의 구성 설정 때문입니다. 아래 줄을 추가하면 문제가 해결됩니다. config.serve_static_assets = true

하지만이 줄은 레일 4 이후에 제거되며 레일 5.0에서는 제거됩니다. 이를 위해 다음과 같은 새로운 구성 매개 변수가 도입되었습니다. 아래와 같이 경고 메시지가 표시되지만 정적 파일이 제공됩니다.

중단 경고 : config.serve_static_assets (이것은 단순히 public 폴더에있는 모든 서비스를 제공 할 수 및 자산 파이프 라인 관련이없는)의 역할을 명확히하기 위해 config.serve_static_files로 이름이 변경되었습니다 구성 옵션을 선택합니다. serve_static_assets 별칭은 Rails 5.0에서 제거됩니다. 이에 따라 구성 파일을 마이그레이션하십시오.

config.serve_static_assets 매개 변수를 true로 설정하면 더 나은 결과를 얻을 수 있습니다.