[RUBY-ON-RAILS] 레일 : 파셜에 지역 주민을 전달하는 구문에 대해 혼란
RUBY-ON-RAILS레일 : 파셜에 지역 주민을 전달하는 구문에 대해 혼란
파셜 렌더링 (그리고 그들로 지역 주민을 통과)에 관해서 이해 레일 "마법".
왜이 작업을 수행합니다
<%= render "rabbits/form" %>
그리고이 작품 :
<%= render "rabbits/form", :parent => @warren, :flash => flash %>
하지만이 작동하지 않습니다
<%= render "rabbits/form", :locals => { :parent => @warren, :flash => flash } %>
그러나이 작업을 수행합니다
<%= render :partial =>"rabbits/form", :locals => { :parent => @warren, :flash => flash } %>
내가 S.O.에 사람을 귀찮게 할 필요가 없습니다 또한, 어떻게 이러한 미묘한 차이를 찾아 볼 수 있습니까?
해결법
-
==============================
1.짧은 대답은 당신이 전달하는 첫 번째 인수에 방법의 모습을 렌더링하면 (이 포함 현지인 => {ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ} : 부분 => 'foo는') 해시를 전달합니다. 다음은 모두에 전달합니다 당신의 인수 해시로하고 그에 따라 그 구문 분석.
짧은 대답은 당신이 전달하는 첫 번째 인수에 방법의 모습을 렌더링하면 (이 포함 현지인 => {ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ} : 부분 => 'foo는') 해시를 전달합니다. 다음은 모두에 전달합니다 당신의 인수 해시로하고 그에 따라 그 구문 분석.
당신이 당신의 첫 번째 인수로 문자열을 전달하면, 첫 번째 인수가 부분적인 이름입니다 가정, 그리고 지역 주민으로 나머지를 전달합니다. 그러나 후속 호출, 그것은 실제로 양수인 : 지역 주민 => your_locals_argument,이 경우 전체는 다음과 같습니다 현지인 => {지역 주민 해시} 대신 {주민 해시}의; 즉, 당신이 결국 : 지역 주민 => {: 지역 주민 => {지역 주민 해시}}보다는 : 지역 주민 => {지역 주민 해시}.
내 충고는 단지이다 그래서 항상 명시 적으로 모두 같은 방식으로 시간 값을 전달, 당신은 문제가되지 않습니다. (레일 2 actionpack / lib 디렉토리 / base.rb, 렌더링 () 메소드 3이 다른 레일) 이것에 대해 배우기 위해, 나는 코드 자체에 직접 갔다. 그것은 좋은 운동입니다.
또한, SO에 "귀찮게"사람에 대한 걱정을하지 않습니다. 이 사이트가 존재하는 이유입니다. 난이 뭔가를 배웠습니다.
-
==============================
2.지정해야하는 경우 : 지역 주민, 당신은 지정해야합니다 일부 또는 : 템플릿
지정해야하는 경우 : 지역 주민, 당신은 지정해야합니다 일부 또는 : 템플릿
<%= render :partial => "rabbits/form", :locals => {...} %>
SHOULD 작업
-
==============================
3.honost하기 위해, 나는 단지 내가 지난 몇 년을위한 레일로 유지 되었기 때문에, 이러한 사용 사례에 대해 알고 그 일을하는 새로운 방법이 추가 된 것을 공지 사항을 참조하십시오. 나는 종종 자신을 거기에 실수를하지만, 대개는 쉽게 수정할 수 있습니다.
honost하기 위해, 나는 단지 내가 지난 몇 년을위한 레일로 유지 되었기 때문에, 이러한 사용 사례에 대해 알고 그 일을하는 새로운 방법이 추가 된 것을 공지 사항을 참조하십시오. 나는 종종 자신을 거기에 실수를하지만, 대개는 쉽게 수정할 수 있습니다.
그것은 당신이 저를 요구하는 경우에 철저를 통해 생각하고되지 않은 레일 API의 그 부분 중 하나입니다. 그것은 단지 이전 동작 중 하나를 비하하지 않고, 지난 몇 년 동안 점점 더 많은 문법 설탕을 축적. 렌더 방법은 당뇨병이있다.
그것은 더 악화하려면 다른 컨트롤러와 뷰으로 동작을 렌더링합니다. 나는 또한 파일, 템플릿, 액션 또는 부분이 있는지 확인하기 위해 첫 번째 인수의 내용을 살펴 봅니다. 이 슬래시로 시작하면 다음은 파일, 또는 그런 일.
나는 가능하면 짧은 표기법을 사용하여 찬성입니다. 짧은 표기법 아주 잘 의도를 전달 할 수 있기 때문에. 그것을 읽을 때, 그것은 일반적으로 당신은 무엇을 생각 하는가. 를 작성하는 것은 그 정직하지 않다.
-
==============================
4.여기 http://api.rubyonrails.org/classes/ActionView/Rendering.html#method-i-render에서 렌더링 방식의 소스는 다음과 같습니다
여기 http://api.rubyonrails.org/classes/ActionView/Rendering.html#method-i-render에서 렌더링 방식의 소스는 다음과 같습니다
def render(options = {}, locals = {}, &block) case options # Here is your last case when Hash if block_given? _render_partial(options.merge(:partial => options.delete(:layout)), &block) elsif options.key?(:partial) _render_partial(options) else template = _determine_template(options) lookup_context.freeze_formats(template.formats, true) _render_template(template, options[:layout], options) end when :update update_page(&block) else # here the first three cases _render_partial(:partial => options, :locals => locals) end end
이 도움말을 희망!
from https://stackoverflow.com/questions/4402556/rails-confused-about-syntax-for-passing-locals-to-partials by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 데이터베이스없이 모델을 레일 (0) | 2020.02.06 |
---|---|
[RUBY-ON-RAILS] Heroku가 거부 밀어, 더 세다 지원하는 응용 프로그램은 감지되지 (0) | 2020.02.06 |
[RUBY-ON-RAILS] 레일의 단수 또는 복수의 컨트롤러 및 도우미 이름 (0) | 2020.02.06 |
[RUBY-ON-RAILS] 3 레일 : 임의의 레코드를 가져 (0) | 2020.02.06 |
[RUBY-ON-RAILS] 어떻게 체인 범위 쿼리에 대한 OR 대신 AND? (0) | 2020.02.06 |