문제

를 사용하여 레일 v2.1,말할 수 있는 행동에 대한 컨트롤러에서 액세스할 수 있는 하나 이상의 위치에 있습니다.예를 들어,레일 내에서,당신은 링크를 사용자를 편집하려면 두 개의 서로 다른 뷰에서,하나의 사용자에게 인덱스 보기,및 다른 에서 또 다른 볼(고 말할 수 있습니다에서 탐색 바는 모든 페이지에서).

내가 무엇인지 궁금해하는 가장 좋은 방법 리디렉션하려면 사용자는 다시 바로 그 자리에 따라 어떤 링크를 클릭.예를 들어:

예제 1:

  1. 모든 사용자 목록
  2. "편집"을 클릭하에는 사용자에 목록
  3. 사용자 클릭"save"양식에서 컨트롤러 리디렉션에 다시 1.

예제 2:

  1. 사용자가 될 수 있는 모든 페이지에서 응용 프로그램에서 탐색 표시줄에 대한 링크는 현재 사용자 편집
  2. 사용자 링크를 클릭하고 편집
  3. 사용자 클릭"save"양식에서 컨트롤러 리디렉션에 다시 모든 페이지들은 경우에는 사용자를 클릭의'수정'링크를 nav 됩니다.

나는 그것을 본 적이 과거에 의:

  1. 치에서 매개변수 원래의 편집과 연결 원격 제어/액션하는 링크를 나타났다.을 만들이 더 건조,사용할 수 있습@컨트롤러입니다.controller_name 및@컨트롤러입니다.에 action_name 에서 도우미가 있습니다.
  2. 컨트롤러 매개변수가 저장하시오.
  3. 한 번 컨트롤러 저장한 기록은,그것을 리디렉션 세션 변수입니다.

무엇이 이에 대한 솔루션이 필요하고 매개 변수를 추가 모든 적용 가능한 링크를 전망이다.는지 궁금하네요가 있다면을 건설하는 방법이로 컨트롤러입니다.

중 하나 더 나은 방법을 생각했었:

  1. 치 before_filter"편집"작업장 리퍼러(은 이 믿을 수 있는 충분한가요?) 으로 세션이 있습니다.
  2. "업데이트"를 히트,컨트롤러 리디렉션됩니다 세션 변수를 삭제할 때 세션 변수입니다.

어떤 생각이에 작업을 수행하는 가장 좋은 방법은?

도움이 되었습니까?

해결책

편집 동작에서 prever_filter를 사용하는 것이 가장 눈에 띄지 않는다고 생각합니다.

참조자는 충분히 신뢰할 수 있어야합니다 ... 참조자가 사용할 수없는 경우 (예 : 누군가 편집 페이지를 북마크 한 경우) 괜찮을 것입니다.

다른 팁

플래시: 다음 요청에만 사용할 데이터는 플래시에 저장 될 수 있습니다. 그런 다음 자동으로 지우지 않아도됩니다. 오류 메시지뿐만 아니라 한 번만 필요로하는 제한된 애플리케이션 컨텍스트에 적합합니다!

나는 당신이 HTTP 액세스를 마지막으로 한 일을 알고 있습니다: 사람들을 마지막 URL로 리디렉션해야한다면 그냥 그렇게하십시오. Referer는 정보를 차단하지 않는 대부분의 브라우저에 대해 사람이 있던 마지막 URL을 제공합니다.

#in edit controller
...
flash[:page_to_redirect_to] = request.referer || "/my/default/path"
...

#in save controller
redirect_to flash[:page_to_redirect_to] || "/my/default/path"

나는 우연히 그들을 하드 코딩하는 것을 제안하지 않을 것이다.

이전 _filter: 나는 이것을 좋아하는 망치로 사용하고 다른 모든 것을 손톱으로 바꾸는 많은 레일 개발자를 봅니다. 필터는 컨트롤러의 모든 또는 실질적으로 모든 방법에 기능을 노출하려는 경우 유용합니다. 나는 그것이 반드시 여기서 사실인지는 모르겠지만, 당신의 마일리지는 다를 수 있습니다. 보증 된 경우 필터를 위의 두 가지 트릭과 결합 할 수 있습니다.

다른 접근 방식을 로드하는 양식에서는 오버레이,아 http://flowplayer.org/tools/overlay/index.html, 다음 아약스에 제출할 수 있습을 닫습니다.나는 이것을 조합으로 자동완성을 제공하는 새로 추가""옵션을 선택합니다.면 오버레이 양식이 제출되 나는 일부를 반환에서 데이터 json 는 행동을 채우기 위해 자동완성.(나는 내 자신 플러그인 하는 데 도움으로 모든 것)

그것은 좀 더 많은 작업이 필요하지만,정말 잘 작동을 위한 최종 사용자에게 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top