2017-09-08 1 views
0

소셜 미디어에 공유하는 텍스트를 기반으로 보고서를 제공하는 "Brand personality" tool을 구축 중입니다.동일한 모델의 두 인스턴스간에 "diff"를 라우트하는 "Rails 방식"은 무엇입니까?

모델이 PersonalityReport이고 경로가 resources :personality_reports입니다.

새로운 기능은 두 보고서 사이에 "diff"를 제공하는 것입니다. 경로에서이를 가장 추측 할 수있는 방법을 찾기 위해 노력하고 있습니다.

이상적으로 나는 그 라인을 따라 GET /personality_reports/:personality_report_id/diff/:id 또는 뭔가를하고 싶습니다, 나는 단순히 GET 경로와 같은 경로에 그것을 둘 수 있었다 동안 resources/collections 스타일을 사용하여 경로를 지정하는 더 Railsy 방법이 내 routes.rb을되도록 파일을 더 쉽게 이해할 수 있습니까? 생각할 수있는

답변

1

'산뜻한'방법은 다음과 같습니다

resources :personality_reports, param: 'personality_report' do 
    member do 
    get 'diff/:id', to: 'personality_reports#action', as: 'diff_route' 
    end 
end 

분명히하려면 : 컨트롤러 번호 액션, 그리고 같은 것은 : 경로의 이름입니다.

diff_route_personality_report GET /personality_reports/:personality_report_id/diff/:id(.:format) personality_reports#action 
+0

감사합니다. 다른 컨트롤러가 필요 없도록이 방법을 사용했습니다. – stef

1

나는 당신이 무엇을 언급하는 것은 충분하다고 생각

resources : personality_reports do 
    resources :diffs, only: [:show] 
end 

그래서, 루트 참고

personality_report_diff GET /personality_reports/:personality_report_id/diffs/:id(.:format) diffs#show 

, 아래와 같이 : 당신이 할 수있는 레이크 경로를 실행 한 후이 생성 볼 수 있습니다 또한 단 하나의 리소스로 만들려면 리소스의 diff 경로를 diff으로 지정하십시오.

+0

감사합니다. 저는 DiffsController가 있어야만했기 때문에 그 생각을하고 버렸습니다.하지만 아마도 올바른 길입니다. – stef

관련 문제