특정 경로에 대해 정의한 기본값에 액세스하고 싶습니다. 그러나 레일스는 매개 변수 해쉬에 넣지 않습니다. 예 :레일 : 경로 세그먼트 기본값 액세스
routes.rb :
http://localhost:3000/packages
PARAMS을 해시됩니다 :
{"action"=>"index", "controller"=>"packages"}
하지만 내가 선호하는 것은이다 내가 전화
get "packages(/:display)", to: "packages#index", defaults: { display: 'grid' }
URL 얻으세요 :
{"action"=>"index", "controller"=>"packages", "display"=>"grid"}
문제는 실제로 크지 않습니다. 하지만 Rails는 DRY를 사용하여 routes.rb에 기본값을 유지하고 컨트롤러 나 뷰 코드에서 기본값을 유지할 수 없다고 생각합니다.
제 의도는 결과 표나 결과 목록을 표시하는 것입니다. 그리고 사용자가 특정보기를 지정하지 않으면 그리드 스타일을 사용하고 싶습니다.
(나는 레일 4를 사용하고 있습니다)
'/ packages'가 일치하는 이전 경로가 있습니까? – deefour
오 마이. 너는 그렇게 생각했다. "packages"=> "packages # index"를 얻으십시오. 나는 그것을 주석 처리했으며 이제 기본 매개 변수가 예상대로 전달됩니다. 크리스탈 공을 들여다 줘서 고마워. :) –
나는/packages/list를 호출 할 때 꽤 이상한 효과를 얻지 만. * params *가 * request.params *와 같다고 가정했습니다. 그러나 * params *는 { "display"=> "list", "controller"=> "패키지", "action"=> "index" "controller"=> "packages", "action"=> "index"}. 기묘한. –