문제

다른 옵션보기 :

하나는 정적 페이지를 공개/ 폴더에 넣는 것이지만 레이아웃/ 애플리케이션의 헤더가 일관되게되기를 원합니다.

이것을 시도했지만 오류가 발생했습니다.

# in routes.rb:
map.connect '*path', :controller => 'content', :action => 'show'

# in content_controller.rb:
def show
  render :action => params[:path].join('/')
end

내가 원하는 것은 FAQ, 연락처, TOS, 개인 정보 및 기타 비 신청 유형 페이지와 같은 것을 쉽게 만들 수있는 방법입니다. 누가 이것을 했습니까?

도움이 되었습니까?

해결책

ThoughtBot은 정적 컨텐츠를 표시하기위한 High_voltage라는 플러그인이 있습니다. https://github.com/thuitchbot/high_voltage

다른 팁

을 위한 Rails5 그리고 Rails4 다음을 수행 할 수 있습니다.

노선 끝에 아래 줄을 넣으십시오.

  get ':action' => 'static#:action'

그런 다음 요청합니다 뿌리/환영, 렌더링됩니다 /app/views/static/welcome.html.erb.

아무것도 넣을 필요가 없지만 '정적'컨트롤러를 만드는 것을 잊지 마십시오.

을 위한 Rails3 'get'대신 '매치'를 사용해야합니다.

  match ':action' => 'static#:action'

URL 구조에 따라 다릅니다. 경로가 / (eg / about_us)에서 나오기를 원한다면 :

map.connect ':action', :controller => "static"

이것은 경로 파일의 끝 부분에 가야합니다. .html.erb 파일을 앱/뷰/static에 던지면 완료됩니다.

EG : 던지는 about_us.html.erb, /about_us에 페이지를 줄 것입니다.

질문에있는 항목은 당신에게 주어진 배열을 분석 할 수있는 모든 경로를 잡는 데 좋습니다. params[:path]. 그것에 대한 조금 더 많은 정보 http://railscasts.com/episodes/46-catch-all-route

행동을 렌더링하는 것은 의미가 없습니다. 레이아웃으로 템플릿 (또는 파일)을 렌더링하고 싶습니다.

# 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 상태를 반환합니다.

  • http://localhost:3000/static/static1
  • http://localhost:3000/static/static3
  • http://localhost:3000/static/static2

App/ Public을 살펴보면 static1.html, static2.html 및 static3.html의 정적/ 디렉토리가 표시됩니다. 처음으로 페이지에 액세스 한 후에는 페이지 캐싱 덕분에 후속 요청이 완전히 정적입니다.

Show, Absus, 개인 정보와 같은 커플 방법이있는 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

모두 App/Views/Layout/Application.html.erb에서 동일한 레이아웃을 사용합니다.

Lindsaar 해결책은 내가 본 것 중 최고 중 하나입니다. 그는 GIT 개정이 변경되었을 때 만료 된 캐싱 정적 페이지를 만듭니다.

<%= cache "site-page-#{@page_name}-#{App.git_revision}" do %>
  <%= render :partial => @page_name %>
<% end %>

정적 페이지 (예 : 연락처)에 대한 PagesController를 작성하고 삽입하십시오.

def contact_page
end

config/lours.rb 삽입물에서

get 'contact' => 'pages#contact_page'

보기/페이지/contact_page.html.erb에서 내용을 표시합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top