컨트롤러 메서드간에 배열을 공유하고 다른 컨트롤러의 페이지를 다시로드하거나 호출 할 때까지이 메서드를 저장할 수 있습니까? 일부 메소드는 배열을 변경해야합니다. 당신은 다음 같은 컨트롤러 인스턴스의 메소드를 통해 값을 공유하려는 경우컨트롤러 메서드간에 값을 전달하는 방법
답변
이 인스턴스 변수를 선언 :
class BarsController < UsersController
before_filter :init_foo_list
def method1
render :method2
end
def method2
@foo_list.each do | item|
# do something
end
end
def init_foo_list
@foo_list ||= ['Money', 'Animals', 'Ummagumma']
end
end
당신이 다음 세션 withn 두 개의 컨트롤러에서 값을 공유하려는 경우 :
class BarsController < UsersController
before_filter :init_foo_list
def method1
render :controller => "FoosController", :action => "method2"
end
def init_foo_list
params[:shared_param__] ||= ['Money', 'Animals', 'Ummagumma']
end
end
class FoosController < UsersController
def method2
params[:shared_param__].each do | item|
# do something
end
end
end
기존 키와의 충돌을 피하기 위해 공유 매개 변수 키에 고유 한 이름을 지정하십시오.
다른 옵션은 공유 배열을 세션 광고에 저장하여 마지막 렌더링 전에 삭제하는 것입니다.
레일 캐시를 사용할 수 있습니다.
Rails.cache.write("list",[1,2,3])
Rails.cache.read("list")
당신의 방법은 작동하는 것 같습니다! Rails.cache에 대한 좋은 문서를 찾지 못했습니다. 제게 링크를 제공해주세요. – Antiarchitect
하지만 다른 세션의 값이 다른 경우 어떻게됩니까? –
두 번째'토니 (Tony) '. 세션 전체에서 'list'이름의 고유성을 보장하지 않는 한이 솔루션은 동시 요청 중에 실패합니다. –
내 대답은 귀하의 요구 사항에 가까운인지 잘 모르겠지만, 나는 그 값에 하나의 컨트롤러 액션과 기준에 페치 개체/모델의 값을 얻으려면이 내가 할 것입니다 다른 컨트롤러 액션에서 다른 값을 가져와야합니다.
그것이 도움이되기를 바랍니다@pages=Post.find.all`
@@[email protected](any manipulations)
지금
@@my_vales
는 해당 컨트롤러의 조치에 사용할 수 있습니다 .. : 나는 클래스 변수를 사용합니다 및 예를 들어 내 컨트롤러 액션
전반에 걸쳐 사용 ...
- 1. 보기에 값을 전달하는 방법
- 2. jQuery에서 값을 전달하는 방법
- 3. viewcontroller에서 webview에 값을 전달하는 방법
- 4. jsf-jsp에서 값을 전달하는 방법
- 5. Python에서 flex로 값을 전달하는 방법
- 6. 보기에서 Sqlite 값을 전달하는 방법
- 7. 파이썬에서 C++로 값을 전달하는 방법?
- 8. 여러 체크 박스의 값을 서버에 전달하는 방법
- 9. TableView 컨트롤러에서 customCell 클래스로 값을 전달하는 방법
- 10. 레일 : 텍스트 필드에서 부분으로 값을 전달하는 방법
- 11. href 아래 href 값을 전달하는 방법
- 12. curl PHP에서 url 값을 전달하는 방법
- 13. Inno Setup을 통해 msi에 값을 전달하는 방법
- 14. 열린 창에서 값을 팝업 창에 전달하는 방법
- 15. XSLT에서 사용자 정의 함수에 값을 전달하는 방법
- 16. JQuery UI : 대화 상자에 값을 전달하는 방법
- 17. 열거 형 값을 웹 서비스에 전달하는 방법
- 18. Watin을 사용하여 TextField에 여러 값을 전달하는 방법
- 19. 코드 값을 자바 스크립트로 전달하는 방법
- 20. ASP에서 Eval(). 리디렉션시 값을 전달하는 방법
- 21. FileField의 초기 값을 Formset에 전달하는 방법 (Django에서)
- 22. Cocoa에서 SQLite 쿼리로 값을 전달하는 방법
- 23. 한 활동에서 이전 활동으로 값을 전달하는 방법
- 24. android에서 html 파일로 값을 전달하는 방법
- 25. 한 .aspx에서 다른 .aspx로 값을 전달하는 방법
- 26. PHP에서 자바 스크립트로 값을 연속적으로 전달하는 방법
- 27. asp.net의 하위 도메인에 세션 값을 전달하는 방법
- 28. PHP에서 Javascript로 값을 전달하는 신뢰할 수있는 방법
- 29. gpg 명령에 변수 값을 전달하는 방법
- 30. Java 클래스에 javascript 변수 값을 전달하는 방법
attr_accessor는 클래스 인스턴스 전체에서이 변수에 액세스 할 수 있음을 의미합니다. 흠 .. 나는 이것을 시험해 볼 것이다! 감사! – Antiarchitect
첫 번째 방법은 작동하지 않습니다. foo_list는 method2에서 nil입니다. 하지만 첫 번째 메서드는 두 번째 메서드보다 먼저 호출됩니다. 그리고 foo_list를 메소드에 없지만 초기화 할 때 어떻게 정의 할 수 있습니까? DEF [ '동물'돈 ','Ummagumma '] self.foo_list = 초기화 이와 단부 또는 다른 방법 으로든? – Antiarchitect
'before_filter'에 값을 설정하십시오. –