developer tip

Ruby on Rails의 시작 / 홈 페이지-모범 사례

optionbox 2020. 10. 4. 10:54
반응형

Ruby on Rails의 시작 / 홈 페이지-모범 사례


내 홈페이지 (또는 환영 페이지)는 두 모델의 데이터로 구성됩니다 (작성자 및 게시물이라고 부름). 저는 rails를 처음 접했고 이것을 달성하는 가장 좋은 방법이 무엇인지 잘 모르겠습니다.

작성자와 게시물에서 데이터를 수집 한 다음 환영 인덱스보기에 표시하는 welcome이라는 새 컨트롤러를 만들어야합니까? 아니면 작성자로부터 데이터를 가져 오는 게시물 모델 아래에 환영보기가 있어야합니까? 아니면 이것을 달성하는 다른 방법이 있습니까?

이 모든 작업을 기술적으로 수행하는 방법을 이해하지만 레일 프레임 워크를 사용하는 모범 사례 방법이 무엇인지 확실하지 않습니다.


문제는 귀하의 홈페이지가 단지 랜딩 페이지입니까 아니면 페이지 그룹입니까? 랜딩 페이지 인 경우 사용자가 다른 곳으로 이동하는 것을 제외하고는 오래 머무를 것으로 기대하지 않습니다. 페이지 그룹이거나 기존 그룹과 유사한 경우 컨트롤러에 가장 유사한 작업을 추가 할 수 있습니다.

Static3 개의 정적 페이지가 필요하기 때문에 현재 프로젝트에서했던 것은라는 컨트롤러를 만드는 것 입니다. 다른 곳으로 이동하는 것 외에는 보거나 할 일이 없기 때문에 홈 페이지는 이들 중 하나입니다.

기본 경로를 매핑하려면에서 다음을 사용하십시오 routes.rb.

# Place at the end of the routing!
map.root :controller => 'MyController', :action => :index

제 경우에는 다음과 같습니다.

map.root :controller => 'static', :action => :index

원하는 경우이 홈 페이지 전용 컨트롤러를 만들 수 있습니다. 나는 그것을 메인이라고 부르거나 홈페이지와 관련된 것을 기억할 수있는 것입니다. 거기에서 데이터와 모델을 가져오고 출력보기로 연기 할 수 있습니다.

class MainController < ApplicationController
  def index
    @posts = Posts.find(:all, :limit => 10, :order => 'date_posted', :include => :user)
  end
end

모델 관계를 올바르게 정의했다고 가정하면 일치하는 템플릿은 매우 간단합니다.

행운을 빕니다. 도움이되기를 바랍니다.


하나의 모범 사례가없는 것 같습니다.

(1) 표준 config/routes.rb파일은 루트 페이지 (또는 홈 / 시작 페이지)를 welcome#index. 이에 따라 안내를 받으면 해당 welcome#index컨트롤러 / 액션 을 생성 하려면 다음 명령을 사용할 수 있습니다.

rails generate controller Welcome index

그런 다음에서 생성기에 의해 자동으로 추가 된 config/routes.rbGET 경로 ( get "welcome/index")를 제거하고 루트 경로 root 'welcome#index'(또는 root :to => 'welcome#index'Rails < 4)를 파일 맨 위에 배치 할 수 있습니다.

또한 public/index.htmlRails 에서 삭제 하는 것을 잊지 마십시오 < 4.

(2) 레일 라우팅 가이드에 공식 루비 사용 PagesController. 실제로는을 제안 pages#main하지만, 나에게는 함께가는 것이 더 합리적입니다 pages#home( "홈페이지"가 ​​유비쿼터스 용어 / 개념이기 때문에). 또한이 컨트롤러는 다른 처리 할 수있는 페이지 지향 등의 작업을 pages#about, pages#contact, pages#terms, pages#privacy, 등

(3) 레일 튜토리얼에 루비 와 함께 간다 static_pages#homestatic_pages#help내가 "정적"이 컨트롤러를 나타내는의 생각처럼 안하지만, 등. 이러한 페이지에는 여전히 동적 측면, 특히 홈페이지가있을 것입니다!

(4) 홈페이지 를 다루는 방법에 대해서는 논의하지 않지만 , Semi-Static Pages의 RailsCast # 117 전용 리소스 표시하는 또 다른 접근 방식을 제안 합니다.

1 및 / 또는 2를 선호합니다. "and"시나리오에서는 welcome # index 및 pages # about 등을 사용할 수 있지만 "or"시나리오에서는 pages # home, pages # about, 등. 강제로 선택하면 코드가 줄어들 기 때문에 옵션 2를 선택하겠습니다. 그리고 btw, 2 및 3은 "정적"이라는 단어를 제외하고 거의 동일합니다.


Rails를 처음 시작할 때 이와 같은 질문을했습니다. 알아야 할 사항은 다음과 같습니다.

  • 모델이 반드시 컨트롤러 및 뷰와 직접 관련이있는 것은 아닙니다.

즉, 특정 컨트롤러 / 뷰 조합은 특정 페이지를 생성하는 데 필요한만큼 많은 모델과 함께 작동 할 수 있습니다.

컨트롤러의 목적은 해당 데이터를 저장하는 데 사용되는 모델에 관계없이 표시해야하는 데이터 세트를 준비하는 것입니다.

보기의 목적은 가장 적절한 방법으로 해당 데이터를 표시하는 것입니다.

즉, 컨트롤러 / 뷰 조합은 특정 모델의 '아래'가 아닙니다. 그들은 모델을 사용하지만 어떤 계층 적 관계에서도 그 아래에 있지 않습니다. 사실, 그들은 그들이 사용하는 모든 모델의 동료 입니다.

혼란은 AWDR 및 기타 소개 텍스트에서 발견 된 스캐 폴드 생성기 예제에서 비롯된 것 같습니다.

루비 스크립트 / 스캐 폴드 모델 컨트롤러 생성

모델과 컨트롤러 / 뷰 간의이 암시 적 관계가 나를 약간 혼란스럽게한다는 것을 알고 있습니다. 하지만 정말 엄격한 관계는 없습니다. 그렇다면 MVC 접근 방식으로 복잡한 작업을 수행하기가 매우 어려울 것입니다. 그리고 분명히 그것은 사실이 아닙니다.

도움이 되었기를 바랍니다.

-존


The best practice would be your first suggestion. Create a 'welcome' controller and call the records from whichever models you want. Have a root route point to that controller. Very clean and proper.


Please note that in Rails3, correct way to handle this is to add following line to the end of the routes.rb file:

root :to => "welcome#index"

and delete public/index.html.erb.

Please also note that welcome#index corresponds to index action in a WelcomeController and the code from The Wicked Flea's answer would look like:

class WelcomeController < ApplicationController
  def index
    @posts = Posts.find(:all, :limit => 10, :order => 'date_posted', :include => :user)
  end
end

This answer is as of Rails 3.2.1.

First set up a Controller for pages, named for example static:

$ rails generate controller static

In file app/controllers/static_controller.rb:

class StaticController < ApplicationController
    def index       
    end
end

Create the new View file app/views/index.html.erb

And finally configure your config/routes.rb:

MyApp::Application.routes.draw do
   match 'home', :to => "static#index"
   root :to => "static#index"
end

This will make both /home and / go to whatever you put in the View file you just created.


Create a new controller named as appropriately as you can. SummaryController? StartController? DailyFrontPageController? You'll have an idea.

Not only that, I'd seriously consider creating a new Model, not ActiveRecord-based, that collects the information from your Author and Post models (or whatever their real names are) for presentation in your view. The alternative is to assemble the data in the controller, which will almost certainly be messy - it was every time I tried it, and I tried it a lot. A separate model seems to end up a lot tidier.

If the processing is relatively straightforward, why not try building the data in the controller first, then wrap the output in a Struct, then replace the Struct with a real class and move the construction there, refactoring all the way. It shouldn't add too much to the total time (most of the code can be reused) and you'll get a good idea of what works best for you.

참고URL : https://stackoverflow.com/questions/349743/welcome-home-page-in-ruby-on-rails-best-practice

반응형