[RUBY-ON-RAILS] 어떻게 레일 인스턴스 변수는 뷰에 전달된다?
RUBY-ON-RAILS어떻게 레일 인스턴스 변수는 뷰에 전달된다?
내 레일 응용 프로그램에서,이 같은 컨트롤러가 :
class MyController < ApplicationController
def show
@blog_post = BlogPost.find params[:id]
end
end
내 관점에서 간단히 말해서 나는이 작업을 수행 할 수 있습니다
<%= @blog_post.title %>
나는 마법 불편 해요. 이것은 어떻게 달성?
해결법
-
==============================
1.뷰가 렌더링 될 때, 인스턴스 변수와 그 값은 컨트롤러로부터 픽업하고보기 인스턴스로 설정 뷰 이니셜로 전달된다. 이 이러한 루비 방법을 사용하여 수행됩니다 :
뷰가 렌더링 될 때, 인스턴스 변수와 그 값은 컨트롤러로부터 픽업하고보기 인스턴스로 설정 뷰 이니셜로 전달된다. 이 이러한 루비 방법을 사용하여 수행됩니다 :
instance_variables - 인스턴스 변수의 이름 (문서)를 얻는다 instance_variable_get (VARIABLE_NAME는) - 인스턴스 변수의 값을 가져옵니다 (문서) instance_variable_set (VARIABLE_NAME, VARIABLE_VALUE) - 인스턴스 변수의 설정 값 (문서)
여기에 레일 코드는 다음과 같습니다
수집 제어기 인스턴스 변수 (GitHub의)
def view_assigns hash = {} variables = instance_variables variables -= protected_instance_variables variables -= DEFAULT_PROTECTED_INSTANCE_VARIABLES variables.each { |name| hash[name[1..-1]] = instance_variable_get(name) } hash end
뷰 (GitHub의)에 전달 :
def view_context view_context_class.new(view_renderer, view_assigns, self) end
뷰 (GitHub의)에서 그들을 설정 :
def assign(new_assigns) # :nodoc: @_assigns = new_assigns.each { |key, value| instance_variable_set("@#{key}", value) } end
-
==============================
2.decent_exposure 보석은 레일 '의 표준 컨트롤러 인스턴스 변수의 행동에 대한 대안입니다. 추가 정보는 문제에 대한 좋은 작성자가 있습니다.
decent_exposure 보석은 레일 '의 표준 컨트롤러 인스턴스 변수의 행동에 대한 대안입니다. 추가 정보는 문제에 대한 좋은 작성자가 있습니다.
from https://stackoverflow.com/questions/18855178/how-are-rails-instance-variables-passed-to-views by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 수정 트위터 부트 스트랩 네비게이션 바 (0) | 2020.02.08 |
---|---|
[RUBY-ON-RAILS] 사용자 정의 필드 / 레일과 고안 열 추가 4 (0) | 2020.02.08 |
[RUBY-ON-RAILS] 호환되지 않는 문자 인코딩 : ASCII-8BIT와 UTF-8 (0) | 2020.02.08 |
[RUBY-ON-RAILS] 레일의 열 이름에 대한 별칭 (0) | 2020.02.08 |
[RUBY-ON-RAILS] 유효성 하나 개의 필드의 존재 또는 다른 (XOR) (0) | 2020.02.08 |