나는 html
과 js
에 모두 응답하는 컨트롤러가 있습니다. html
보기는 전체 페이지 (머리글과 바닥 글 포함)를 렌더링하는 반면 js
은 #main
을 대신합니다. 머리글과 바닥 글을 제외하고 두 형식 모두 동일한 내용을 렌더링합니다. 이 작품레일 : 뷰 렌더링 (일부는 아님) 뷰 내에서
_show.html.erb
<div>Content!</div>
show.html.erb
<%= render "show" %>
show.js.erb
$("#main").fadeIn("<%= escape_javascript(render 'show') %>");
,하지만 별도의 _show
부분이 필요하지 않은 경우 내가 선호하는 것 : 나는 3 개 파일이 효과를 얻을 수 있습니다. 불행하게도,이 작동하지 않습니다
show.html.erb
<div>Content!</div>
show.js.erb
$("#main").fadeIn("<%= escape_javascript(render 'show') %>");
으로 레일이 show
부분이 아닌 실제보기를 찾습니다.
레일스가 부분이 아닌보기 파일을 찾는 방법이 있습니까?
당신이 사용할 수있는': 에프 옵션. ': file => 'show''.렌더 도우미는'render '의 문자열 인수를'render : partial =>'yourview'로 암시 적으로 바꿉니다. 그러나 문제는 js 액션의 lookup 컨텍스트가 js 버전에 대한 "show"를 해결하여 무한 루프 또는 그와 같은 결과를 초래할 수 있다는 것입니다. – numbers1311407
다행히 루프가 돌아 가지 않습니다. 적어도, 아직. 지금은 '누락 된 템플릿'오류가 발생합니다. 그것은 심지어 스스로를 찾을 수없는 것 같습니다. – nullnullnull
다른 뷰 내부에 비 부분 뷰를 렌더링하는 것이 Rails Way ™와 정확하게 일치하지는 않습니다. 현재의 솔루션이 더 좋을 것입니다. 명명에 대해 이상하게 느껴진다면 이름을'_body'로 변경하십시오. 이 시나리오에서 볼 수있는 공통점은'render (@resource)'입니다. 이것은 부분 경로로 바뀝니다. 'resources/_resource'. – numbers1311407