레일즈 2.3.11에서 작업 중입니다. http://www.abc.com/users/e.f.json과 같은 URL을 가지고 있다면 id가 'e.f'이고 예상되는 형식이 'json'이 될 것으로 기대합니다. 누군가 그것을 할 수있는 방법을 제안하시기 바랍니다 수 있습니다. 감사합니다.레일의 ID에 점이 있음
7
A
답변
8
: 형식 규칙 때문에 Rails는 모든 매개 변수를 점없이 구문 분석합니다. 당신이 원하는 경우 route parameters with dots을 가질 수
# You can change the regex to more restrictive patterns
map.connect 'users/:id', :controller => 'users', :action => 'show', :id => /.*/
그러나 이후
모두 '*'와 '+'정규식 와일드 카드는 무시합니다, 욕심 : 완전히 PARAM (형식입니다.)입니다. 형식 정규식 :map.connect 'users/:id:format', :controller => 'users', :action => 'show', :requirements => { :format => /\.[^.]+/, :id => /.*/ }
map.connect 'users/:id', :controller => 'users', :action => 'show'
단점은 당신이있는 점을 포함해야한다는 것입니다 : 당신이 절대적으로 사용자 이름에 점을 가지고해야하는 경우
지금, 당신을 도울 수있는 의사 해결 방법은 그렇지 않으면 사용자 이름 표현식에 의해 캐치됩니다. 그런 다음 컨트롤러에서 점선 형식 (예 : .json)을 처리해야합니다.
2
여기는 andersonvom 's와 비슷한 해결책이지만 모든 규칙을 하나의 규칙으로 유지합니다 (현대 레일 라우팅 약어를 사용합니다).
map.connect 'users/:id(.:format)', to: 'users#show', id: /.*?/, format: /[^.]+/
(:format
앞에 .
주)
트릭은, (.:format)
를 선택 형식을 추가하고 형식이 인식되도록 ID 정규식이 아닌 욕심 확인하는 것입니다. 하나의 규칙으로 유지하는 것은 경로에 이름을 지정하려는 경우 중요하므로 형식에 상관없이 리디렉션, 링크 등에 사용할 수 있습니다.
관련 문제
- 1. 레일의 환경
- 2. 레일의 시간대
- 3. 레일의 nginx
- 4. 레일의 authlogic
- 5. 루비/레일의 자연어 날짜는?
- 6. 레일의 양방향 그래프
- 7. 루비/레일의 타이밍 코드
- 8. 레일의 Rspec 및 옵저버
- 9. 레일의 다 대다 관계
- 10. 선택 입력이있는 레일의 버그?
- 11. 레일의 깨진 외래 키
- 12. 레일의 다단계 연결
- 13. 레일의 사용자 정의 속성
- 14. 레일의 그룹에서 항목을 작성
- 15. div를 레일의 링크로 바꿈
- 16. 레일의 영역 기능
- 17. 호보 레일의 라디오 버튼
- 18. 레일의 카운트 다운 타이머
- 19. 레일의 관리 섹션
- 20. 레일의 테이블 구성 요소
- 21. 레일의 약속 스케줄러
- 22. 레일의 평균 구두 크기
- 23. 레일의 구독 모델
- 24. 레일의 CMS 구성 요소
- 25. 레일의 보안 활성 자원
- 26. 레일의 MVC에서 혼란 스럽습니다.
- 27. 레일의 서브 도메인 3
- 28. 레일의 맞춤 경로
- 29. 레일의 Authlogic과 네임 스페이스
- 30. 레일의 시간차를 계산하는 방법
2.3의 경로 구문에 익숙하지 않지만 마침표를 허용하지 않는 형식에 제약 조건을 추가해 볼 수 있습니다. 이렇게하면 형식을 마지막 점으로 구분 된 세그먼트로만 유지하는 데 도움이됩니다. 형식을 사용하지 않으면 ID의 일부가 형식으로 사용됩니다. – coreyward
[Rails - "점"이 포함 된 Params (예 : /google.com)] (http://stackoverflow.com/questions/2952235/rails-params-with-dot-e-g-google-com) 가능한 복제본 –