2014-02-18 2 views
1

여기 내 질문은 내 간단한 응용 프로그램의 라우팅 및 컨트롤러를 수행하는 적절한 방법에 관한 것입니다. 솔직히 나는 User 모델과 Post 모델을 고수했다.Rails 4.0의 사용자 모델 대시 보드 및 게시물에 대한 올바른 라우팅

나는 다음과 같이 라우팅있어 : 컨트롤러에서

match '/dashboard', to: 'dashboard#user' 

은 사용자 자신의 게시물 (게시물 및 사용자 프로파일이 사용자에게 완전 개별) 찾기 위해 세션 UID를합니다. 지금까지 대시 ​​보드는 그 목적을 수행합니다. 질문은 여기서 어디로 가야합니까? 게시물은 게시물 목록과 동일한보기로 표시됩니다. 편집/업데이트 및 작성을 위해 내 경로를 /dashboard/posts/:id으로하고 싶습니다.

이렇게하면 자원을 사용하게됩니다. 마지막으로 : scope '/dashboard' 또는 path: '/dashboard/posts'을 사용하는 것이 좋은 방법입니까, 아니면 "the Rails Way"반대입니까? 아니면 여기에 무슨 일이 일어나고 있는지 완전히 잘못 생각하고 있습니까?

코드를 완전히 망치고 반복적으로 반복하는 것을 두려워합니다 (인증에서와 같이 경로를 깨끗하게 유지하는 것).

답변

3

당신은 사용할 수 있습니다 중 하나이 같은 namespace 또는 nested resources :

#config/routes.rb 
namespace :dashboard do 
    root to: "users#index" 
    resources :posts, :comments 
end 

#app/controllers/dashboard/users_controller.rb 
Class UsersController < Dashboard::ApplicationController.rb 
end 

중첩


네임 스페이스

#config/routes.rb 
resources :user, path: "dashboard", as: "dashboard" do 
    resources :ads 
end 
+0

에서

#Dashboard get '/dashboard', to: 'dashboard#user', as: 'dashboard' get '/dashboard/posts/:id', to: 'posts#show', as: 'post' #Posts get '/dashboard/posts/:id', to: 'posts#new', as: 'new_post' post '/dashboard/posts/:id', to: 'posts#create', as: 'create_post' put '/dashboard/posts/:id', to: 'posts#update', as: 'create_post' 

더 많은 정보를 귀하의 답변 주셔서 감사합니다. 나는 단지 '# 대시 보드'방법만을 사용할 때 여전히 좋은 접근 방법인가? 나는 이것이'only : : index'를 사용함으로써 행해질 수 있다는 것을 알고 있지만, 여기에 실제로 자원을 사용하지는 않습니다. 네임 스페이스를 사용하는 것이 좋습니다. – Anton

+1

확장 성 있기 때문에 네임 스페이스 메서드를 사용하는 것이 좋습니다. 중첩 된 리소스를 사용하면 지저분 해집니다. 네임 스페이스를 사용하면 앱에 대해 완전히 다른 섹션이 있음을 의미합니다. 여기에 내가 어떻게 해야할지 배울 수 있습니다 : http://iain.nl/backends-in-rails-3-1 –

1

나는 경로가 무엇인지에 대한 보안과 명료성을 위해 모든 경로의 이름을 명시 적으로 지정하는 것을 좋아합니다. 귀하의 경우 같은 것을 수행하기위한 그래서 : http://guides.rubyonrails.org/routing.html

+0

고맙습니다. 분명히 내 작업에서이 접근법을 고려할 것입니다. 나는 또한'put' 메서드를 지적 해 주심에 감사 드리며,'match'를 고수하면서 실제로 패치/put 동사를위한 메서드가 있다는 것을 잊어 버렸습니다! – Anton