저는 Ruby 세계와 Sinatra를 처음 접했으므로 계속해서 오류를 묻는 것 외에 다른 선택의 여지가 없습니다.slim이 잘못된 경로에서 템플릿을 렌더링하려고 시도합니다.
나는 템플릿 엔진으로 Slim과 Rack + Sinatra의 조합을 사용하고 있습니다. 나는이 같은 내 app.rb
설정이 있습니다
module Pulsr
class StylusHandler < Sinatra::Base
set :views, File.dirname(__FILE__) + '/stylus'
get '/css/styles.css' do
stylus :styles
end
end
class Application < Sinatra::Base
register Sinatra::ConfigFile
config_file './config/config.yml'
use Pulsr::Api
use Pulsr::Routes
enable :logging, :dump_errors if Sinatra::Base.development?
disable :method_override, :run
set :public_folder, File.join(:root.to_s, 'static')
set :views, File.join(:root.to_s, 'views')
#set :static_cache_control, [:public, max_age: 60 * 60 * 24 * 365] if Sinatra::Base.production?
end
끝
을 그리고 Pulsr::Api
및 Pulsr::Routes
는 하위 디렉토리에 두 개의 서로 다른 파일에 있습니다. 내가 가진 문제는 슬림 시도는 다음과 같습니다 경로 파일의 경로에 템플릿 상대적으로 렌더링하는 것입니다 :
module Pulsr
class Routes < Sinatra::Base
get '/*' do
slim :index
end
end
끝을
그래서, 내 폴더 구조는 다음과 같은 :
- config
- config.yml
...
- controllers
- routes.rb
- views
- index.slim
- app.rb
- config.ru
- Gemfile
...
이 오류 메시지는 No such file or directory @ rb_sysopen - /Users/rolandjitsu/Projects/Products/pulsr/controllers/views/index.slim
입니다. 실제로이 템플릿은 views
폴더에 한 레벨 위로 배치됩니다.
모든 코드가 app.rb
파일에 있었기 때문에 정상적으로 작동했지만 지금은이 경로 문제를 해결하는 방법을 잘 모릅니다.
'set : views, File.expand_path (File.join (__ FILE__,'../../ views/views '))'와 같은 것을 시도했기 때문에 설정이 있어야한다고 생각했습니다. rb' 파일에 새 오류가있는 것처럼 보였지만 경로를 확인할 수 없다는 오류가 사라졌습니다. 나는 당신이 더 잘 게시 한 두 번째 방식을 좋아한다고 생각합니다. 파일을 분할하는 이유는 MVC와 비슷한 아키텍처를 구현하려고하기 때문입니다. 사실, 여러 별도의 응용 프로그램을 만들지 않고 있습니다. 하나만 있어도 모든 경로가 색인으로 변환됩니다. 페이지를 탐색 할 때 각도를 사용하기 때문입니다. – Roland
@rolandjitsu 나는 내 대답에 언급하지 않은 것 : 귀하의 질문에 당신은'set : views, File.join (: root.to_s, 'views')'이 잘못되어'root/views'가 생성됩니다. 아마도 앱 루트 설정을 사용하려고했을 것입니다. 어쨌든 기본값은'views'이므로, 그 라인을 전혀 필요로하지 않아야합니다. – matt
네, 저는': root'가 내 앱 경로의 루트를 줄 것이라고 생각했습니다. 그것을 얻고 필요한 문자열을 추가하는 또 다른 방법이 있습니까? 실제로 필자는 내 견해가 필요하지 않지만 기본 'public'이 아닌 다른 폴더에있을 것이기 때문에 내 정적 자산을 필요로합니다. – Roland