[RUBY-ON-RAILS] 어떻게 레일에서 정적 콘텐츠를 할까?
RUBY-ON-RAILS어떻게 레일에서 정적 콘텐츠를 할까?
다른 옵션을 보면 :
하나는 단지 공공 / 폴더의 정적 페이지를 넣어하는 것입니다,하지만 난 일치하도록 레이아웃 / 응용 프로그램에서 헤더를 원하는 않습니다.
나는이 시도하지만, 나는 오류가 발생했습니다 :
# in routes.rb:
map.connect '*path', :controller => 'content', :action => 'show'
# in content_controller.rb:
def show
render :action => params[:path].join('/')
end
내가 원하는 건 그냥 .rhtml을 만들어 어딘가에 쉽게 내 자주 묻는 질문, 연락처, 서비스 약관, 개인 정보 보호 및 기타 비 응용 프로그램 유형 페이지 같은 일을 조립하는 쉬운 방법입니다. 누가 이런 짓을했다?
해결법
-
==============================
1.thoughtbot 정적 컨텐츠를 표시하기위한 high_voltage라는 플러그인이 있습니다 https://github.com/thoughtbot/high_voltage
thoughtbot 정적 컨텐츠를 표시하기위한 high_voltage라는 플러그인이 있습니다 https://github.com/thoughtbot/high_voltage
-
==============================
2.Rails5 및 Rails4를 들어 다음을 수행 할 수 있습니다 :
Rails5 및 Rails4를 들어 다음을 수행 할 수 있습니다 :
당신의 routes.rb의 끝에서 아래의 라인을 넣어
get ':action' => 'static#:action'
그런 다음 /app/views/static/welcome.html.erb를 렌더링, 루트 / 환영에 요청합니다.
당신이 거기에서 아무것도 넣을 필요가 없습니다에도 불구하고 '정적'컨트롤러를 작성하는 것을 잊지 마십시오.
Rails3 위해 당신은 대신에 '일치'사용이 '수'
match ':action' => 'static#:action'
-
==============================
3.의 URL 구조에 따라 달라집니다 당신이 경로의 나서야하려면 / (예를 들어, / about_us), 다음 :
의 URL 구조에 따라 달라집니다 당신이 경로의 나서야하려면 / (예를 들어, / about_us), 다음 :
map.connect ':action', :controller => "static"
이것은 당신의 루트 파일의 맨 끝에 가서 응용 프로그램 / 뷰 / 정적으로 .html.erb 파일을 던져 당신은 완료해야합니다.
예컨대 : about_us.html.erb에 던지고, 당신에게 / about_us에서 페이지를 제공 할 것입니다.
[: 경로] 당신은 당신의 질문에이 있다는 항목은 캐치 당신이 PARAMS에서 제공 한 배열을 분석 할 수있는 모든 경로 중대하다. A는 http://railscasts.com/episodes/46-catch-all-route에서 그에 대한 자세한 내용은 비트
-
==============================
4.작업을 렌더링하는 것은 이해가되지 않습니다. 당신은 레이아웃 템플릿 (또는 파일)을 렌더링 할 수 있습니다.
작업을 렌더링하는 것은 이해가되지 않습니다. 당신은 레이아웃 템플릿 (또는 파일)을 렌더링 할 수 있습니다.
# Path relative to app/views with controller's layout render :template => params[:path] # ... OR # Absolute path. You need to be explicit about rendering with a layout render :file => params[:path], :layout => true
당신은 페이지 캐싱과 단일 작업에서 서로 다른 다양한 템플릿을 제공 할 수있다.
# app/controllers/static_controller.rb class StaticController < ApplicationController layout 'static' caches_page :show def show valid = %w(static1 static2 static3) if valid.include?(params[:path]) render :template => File.join('static', params[:path]) else render :file => File.join(Rails.root, 'public', '404.html'), :status => 404 end end end
마지막으로, 우리는 경로를 정의해야합니다.
# config/routes.rb map.connect 'static/:path', :controller => 'static', :action => 'show'
이러한 정적 페이지에 액세스하십시오. 경로가 유효한 템플릿이 포함되어 있지 않을 경우, 우리는 404 파일을 렌더링하고 404 개 상태를 반환 할 수 있습니다.
당신은 응용 프로그램에서 살펴 경우 공용 / 당신은 static1.html, static2.html 및 static3.html와 정적 / 디렉토리를 알 수 있습니다. 처음 페이지에 액세스 한 후, 후속 요청은 페이지 캐싱에 완전히 고정 덕분 일 것이다.
-
==============================
5.유 쇼, aboutus, 개인 정보 보호 등의 몇 가지 방법 (1) 홈 컨트롤러가있는 경우 고려 :
유 쇼, aboutus, 개인 정보 보호 등의 몇 가지 방법 (1) 홈 컨트롤러가있는 경우 고려 :
class HomesController < ApplicationController def show end def privacy end def aboutus end end
그리고 당신의 루트에 표시 방법을지도하고, 같은 일부라는 이름의 경로에 다른지도
map.root :controller => "homes", :action => "show" map.aboutus "/aboutus", :controller => "homes", :action => "aboutus" map.privacy "/privacy", :controller => "homes", :action => "privacy"
그리고 각각 전망
app/views/homes/aboutus.html.erb --> you get http://localhost:3000/aboutus app/views/homes/show.html.erb --> you get http://localhost:3000 (root) app/views/homes/privacy.html.erb --> you get http://localhost:3000/privacy
모든 응용 프로그램에서 동일한 레이아웃을 사용하여 / 뷰 / 레이아웃 / application.html.erb
-
==============================
6.Lindsaar 솔루션은 내가 본 최고의 중 하나입니다. 그는 자식 개정이 변경 될 때 만료 캐싱 정적 페이지를 구축 할 수 있습니다.
Lindsaar 솔루션은 내가 본 최고의 중 하나입니다. 그는 자식 개정이 변경 될 때 만료 캐싱 정적 페이지를 구축 할 수 있습니다.
<%= cache "site-page-#{@page_name}-#{App.git_revision}" do %> <%= render :partial => @page_name %> <% end %>
-
==============================
7.정적 페이지 (예를 들어, 연락처)과 삽입에 대한 PagesController 만들기
정적 페이지 (예를 들어, 연락처)과 삽입에 대한 PagesController 만들기
def contact_page end
에서 설정 / routes.rb 삽입
get 'contact' => 'pages#contact_page'
뷰 / 페이지 / contact_page.html.erb에서 콘텐츠를 표시 할
-
==============================
8.나는 주어진 답변에서 일반화 된 컨트롤러의 아이디어를 사용하지만이 두 경우를 처리하기 위해 그 안에 작업을 넣어, 그래서 나는 캐치 404 싶었 :
나는 주어진 답변에서 일반화 된 컨트롤러의 아이디어를 사용하지만이 두 경우를 처리하기 위해 그 안에 작업을 넣어, 그래서 나는 캐치 404 싶었 :
# app/controllers/static_controller.rb class StaticController < ApplicationController def static_or_404 render params[:static] rescue ActionView::MissingTemplate render :not_found end end
다음 내 라우팅의 맨 아래 :
# config/routes.rb get '*static', to: 'static#static_or_404'
이 경로와 동일한 이름의 앱 / 플레이 / 정지의 뷰를 제공하며, 이러한 뷰가없는 경우, 애플리케이션 / 뷰 / 정지 / not_found.html.erb를 제공. 하나는 렌더링 대체 할 수 있습니다 : redirect_to의 root_path 또는 아무것도 다른 하나 NOT_FOUND 일이하고 싶어.
from https://stackoverflow.com/questions/1146624/how-to-do-static-content-in-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일 3 루비 - 각 요청에 대해 다시로드 lib 디렉토리 (0) | 2020.02.22 |
---|---|
[RUBY-ON-RAILS] 어떻게해야합니까 사용 공장 소녀는 종이 클립 첨부 파일을 생성? (0) | 2020.02.22 |
[RUBY-ON-RAILS] 내가보기에 현재 컨트롤러의 이름을받을 수 있나요? (0) | 2020.02.21 |
[RUBY-ON-RAILS] 아약스 게시물에 세션을 다시로드하지 난간 (0) | 2020.02.21 |
[RUBY-ON-RAILS] RAILS_ENV 대 Rails.env (0) | 2020.02.21 |