[RUBY-ON-RAILS] 모델에서 헬퍼를 사용 : 어떻게 도우미 종속 관계를 포함합니까?
RUBY-ON-RAILS모델에서 헬퍼를 사용 : 어떻게 도우미 종속 관계를 포함합니까?
나는 텍스트 영역에서 사용자의 입력을 처리하는 모델을 쓰고 있어요. http://blog.caboo.se/articles/2008/8/25/sanitize-your-users-html-input의 조언에 따라, 나는 before_validate를 사용하여 데이터베이스에 저장하기 전에 모델의 입력을 청소 해요 콜백.
이처럼 내 모델 모양의 관련 부분 :
include ActionView::Helpers::SanitizeHelper
class Post < ActiveRecord::Base {
before_validation :clean_input
...
protected
def clean_input
self.input = sanitize(self.input, :tags => %w(b i u))
end
end
말할 필요도없이,이 작동하지 않습니다. 내가하려고 할 때 다음과 같은 오류가 새로운 포스트 저장.
undefined method `white_list_sanitizer' for #<Class:0xdeadbeef>
분명히, SanitizeHelper는 HTML :: WhiteListSanitizer의 인스턴스를 생성하지만 내 모델로 혼합 할 때 그것은 HTML을 찾을 수 없습니다 : WhiteListSanitizer을. 왜? 나는이 문제를 해결할 방법에 대해 무엇을 할 수 있습니까?
해결법
-
==============================
1.다음과 같이 그냥 첫 번째 라인을 변경 :
다음과 같이 그냥 첫 번째 라인을 변경 :
include ActionView::Helpers
그게 작동 할 것입니다.
UPDATE : 레일 3 사용의 경우 :
ActionController::Base.helpers.sanitize(str)
신용 lornc의 대답에 간다
-
==============================
2.이 모델에 모든 ActionView :: 도우미 방법을로드의 부작용없이 당신에게 단지 도우미 메서드를 제공합니다 :
이 모델에 모든 ActionView :: 도우미 방법을로드의 부작용없이 당신에게 단지 도우미 메서드를 제공합니다 :
ActionController::Base.helpers.sanitize(str)
-
==============================
3.이것은 나를 위해 잘 작동 :
이것은 나를 위해 잘 작동 :
단순한:
ApplicationController.helpers.my_helper_method
전진:
class HelperProxy < ActionView::Base include ApplicationController.master_helper_module def current_user #let helpers act like we're a guest nil end def self.instance @instance ||= new end end
출처 : http://makandracards.com/makandra/1307-how-to-use-helper-methods-inside-a-model
-
==============================
4.자신의 컨트롤러에서 액세스 도우미에 바로 사용 :
자신의 컨트롤러에서 액세스 도우미에 바로 사용 :
OrdersController.helpers.order_number(@order)
-
==============================
5.나는이 방법을 권하고 싶지 않다. 대신, 자신의 네임 스페이스에 넣어.
나는이 방법을 권하고 싶지 않다. 대신, 자신의 네임 스페이스에 넣어.
class Post < ActiveRecord::Base def clean_input self.input = Helpers.sanitize(self.input, :tags => %w(b i u)) end module Helpers extend ActionView::Helpers::SanitizeHelper end end
-
==============================
6.당신이 모델 내부에 상기 my_helper_method를 사용하려는 경우, 당신은 쓸 수 있습니다 :
당신이 모델 내부에 상기 my_helper_method를 사용하려는 경우, 당신은 쓸 수 있습니다 :
ApplicationController.helpers.my_helper_method
from https://stackoverflow.com/questions/489641/using-helpers-in-model-how-do-i-include-helper-dependencies by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 경로 도우미는 점 대신에 슬래시와 경로를 생성 (0) | 2020.02.11 |
---|---|
[RUBY-ON-RAILS] 주문에 레일 4 has_many에 대한 사용되지 않는 경고 (0) | 2020.02.11 |
[RUBY-ON-RAILS] 루비 온 레일즈 : 형태로 배열 제출 (0) | 2020.02.11 |
[RUBY-ON-RAILS] 레일은 .find 대 어디에요 (0) | 2020.02.11 |
[RUBY-ON-RAILS] rails4 알 수없는 인코딩 이름을 - CP720 (0) | 2020.02.11 |