2011-04-10 4 views
0

레일즈 어플리케이션에서 작업 중이며 MVC와 REST에 익숙하다. 이 방법론을 사용하려고하지만 몇 가지 질문이 있습니다.레일 어플리케이션 구조

  1. "리소스"에 직접 해당하지 않는 탐색 링크가 있어야합니다. '대시 보드' '거래'및 '잔액'이라고 가정 해 보겠습니다. 컨트롤러에서 이것을 어떻게 모델링합니까? 위의 각 단어에 대해 하나씩 세 가지 작업이있는 "탐색"용 컨트롤러가 있습니까?
  2. 응용 프로그램을 모델링하는 합리적인 방법이라면 URL에 "탐색"이라는 단어를 표시하고 싶지 않기 때문에 /dashboard => Navigation # Dashboard라고하는 일치하는 경로를 만들 것이라고 생각했습니다. 이것은 좋은 것처럼 보이지만 서버에서 렌더 '대시 보드'를 할 때 URL을 직접 호출 한 이후 '대시 보드'대신 '탐색/대시 보드'라고 말합니다. 내가 찾은 유일한 해결 방법은 '/ 대시 보드'로 리디렉션하는 것이지만 잘못된 것 같습니다.

고마워요!

편집 : 실제 질문은 누군가가 "로그인"으로 이동하여 유효성 검사 오류가 발생하면 오류를 표시하고 세션 # 새 페이지 (로그인 페이지)보기를 렌더링합니다. 이로 인해 브라우저가/sessions/new로 이동하지만,/signin에 가야합니다. 나는 redirect_to를 사용하지 않기를 바랄 것이다. 왜냐하면 브라우저가 "옳은 것"으로 보이지 않는 전체 두 번째 페이지 요청을하게 될 것이기 때문이다.

답변

1

nav 컨트롤러를 사용하는 것이 좋습니다. 경로에서 사용자 정의 이름을 정의 할 수 있습니다.

#routes.rb 

match "/dashboard" => "navigation#dashboard", :as => "dashboard" 

당신은 당신이 render dashboard_path을 할 수없는 :as => "dashboard"

업데이트

을 정의하여 dashboard_path를 얻을 것이다. 당신이 NavigationController에있는 경우 그렇지 않으면 당신은뿐만 아니라 당신은 당신의보기에 폴더가 dashboard라는 템플릿 navigation라고한다 render 'navigation/dashboard'

폴더를 지정해야 render 'dashboard'을 할 수 있습니다. 당신의있는 navigationController에서

:이 질문에 대한 답변 <%= link_to 'Dashboard', dashboard_path %> 희망 :

class NavigationController < ApplicationController 
    def dashboard 
    ... 
    end 
end 

링크를 사용하십시오.

난 당신이 sign_in 위해 만든 양식을 볼 수 없습니다 2

업데이트. 나는 당신이 장치를 사용하고 있다고 가정합니다. 그렇다면 귀하의 로그인 양식이 signin_path으로 게시되는지 확인하십시오.

+0

@dombesz - 예, 이해하지만, "redirect_to dashboard_path"만 사용할 수 있습니다.하지만 "render dashboard_path"를 수행해야하지만 제대로 작동하지 않습니다. – skaz

+0

@skaz 업데이트 된 답변 – dombesz

+0

를 참조하십시오. @dombesz - 모든 내용이 의미가 있습니다. 내 질문의 루트는 브라우저의 uri를 'navigation/dashboard'로 변경하지 않고 'render [something]'를 호출하여 페이지로 렌더링 할 수 있는지 여부입니다. 이후 'navigation'부분을 숨기려고합니다. url을 만들고 'site.com/dashboard'로 지정하십시오. 내가 렌더링 할 때, 액션은 '/ controller/action'의 기본 경로를 보여 주며 브라우저에서 또 다른 호출이므로 redirect_to를 사용하지 않습니다. 나는 그것이 의미가 있기를 바랍니다. 지금까지 도와 줘서 고마워. – skaz

0

1 - 내가 무엇을 요구하는지 분명히하지 않습니다. 거래

3 - - 대시 보드

2 - 내가 제대로 질문을받을 경우에,이

1 3 개 자원 (컨트롤러)해야 균형

와이 컨트롤러는 show 액션이있을 수 있습니다 당신이라는 이름의 경로를 사용할 수 있습니다에 대한

2

( http://guides.rubyonrails.org/routing.html) 예 : match 'Navigation' => 'Dashboard#show'

도움이 되었으면 좋겠다

3

질문의 첫 번째 부분에서 나는 자원에 잘 맵핑되지 않는 "유틸리티"기능이있는 위치에 자주 간다. 일반적으로, 나는 일종의 유틸리티 컨트롤러에 붙인다. DashboardController를 시도하고 메소드 navigation, balances, transactions 등을 정의 할 수 있습니다.

match '/dashboard' => 'navigation#dashboard' 

이것은 당신이 무엇을 설명하기위한 작동합니다 : 두 번째 부분에 대한

은, 당신이 시도했다. 아직 라우팅하지 않았다면 라우팅 : http://guides.rubyonrails.org/routing.html에서 Rails 가이드를 읽어야합니다.

+0

답장을 보내 주셔서 감사합니다. 두 번째 부분을 다룰 때, 내 routes.rb에서 일치하는 항목이 있지만 탐색 컨트롤러에있을 때 문제가 발생합니다. 포스트 백에 오류가있는 경우 오류를 표시하고 "렌더링 '대시 보드'를 통해 페이지를 다시 렌더링하려고합니다. 그러나 이것은 사용자 브라우저에서 uri를/대시 보드가 아닌/navigation/dashboard가되도록 변경합니다. – skaz

+0

탐색 # 대시 보드에 대한 다른 경로가 있습니까? 그렇다면 일치 항목을 먼저 찾도록 순서를 바꿔보십시오. (레이크 경로 | grep 대시 보드를 사용하여 그러한 매핑이 있는지 확인할 수 있습니다.) –

+0

아니요, 경로는 하나뿐입니다. 문제는 "렌더링 대시 보드"를 호출하는 것이 라우트로 이동하는 것을 방해하지 않는다고 생각했습니다 .rb, 내가 액션을 정의 했으므로, 바로 액션에 직접 갔고 리다이렉트가 없었습니다. 어쩌면 나는 그것에 대해 잘못 생각하고있다. – skaz

0

대시 보드를 구현할 때 DashboardController을 사용하고 index은 대시 보드 일뿐입니다. 나는 또한 보통 HomeController을 정의하고 홈페이지는 어디에 있습니까 (home#index 및 대략 페이지, 피드백 페이지, ...).

관련 문제