2010-05-12 3 views
35

나는 여기서 불안정한 상태에 직면 해있다. 앞에 밑줄이없는 페이지를 부분적으로 렌더링해야합니다.렌더링 할 수 있습니까? 밑줄이없는보기를 부분적으로 렌더링 할 수 있습니까?

<%= render(:partial => "contact" ,:controller=>"home") %> 

app/views/home/_contact.html.erb 

을 찾을 것입니다하지만 난이 일을하는 방법이있다.이

app/views/home/contact.html.erb 

에 대한보고 싶지?

감사

+0

왜 이렇게해야합니까? – Kezzer

+0

나는 불안정한 상황에 처해있다. 내가 렌더링하려고하는보기 실제로 자신의 레이아웃과 다른 컨트롤러의보기입니다. 하지만 컨트롤러에 의해 부분적으로 사용되지는 않습니다. 그게 왜. – ZX12R

+0

나는 또한 비슷한 상황에 처해있다. 부분으로 렌더링하려고하는 뷰는 클라이언트 측 javascript에서 사용되는 템플릿입니다. 클라이언트 쪽에서는 전체보기이지만 서버 쪽에서는 부분적입니다. 서버 쪽 규칙이 내 클라이언트 측 규칙을 엉망으로 만들고 싶지 않습니다.^o^// 웹이 복잡해진다! – Ziggy

답변

60
<%= render :file => '/homes/contact' %> 
+0

집이 없으면/집보다 좋지 않습니까? – shingara

+0

감사합니다 ... 파일 경로가 다음과 같이 contoller에 로컬이 아니어야합니다. @ "render : file =>"contact ": 컨트롤러 =>"home "%> – ZX12R

+0

@shingara, 네,하지만 절대 경로를 사용하는 습관, @ ZX12R, 아니요, "집/연락처"와 같은 전체 경로를 사용해야합니다. – fl00r

4

당신은 정말 필요하지 않을 경우 규칙을 우회하려고해서는 안된다. contact.html.erb에는 양식이 들어 있습니다. 이것을 app/views/home/_contact.html.erb에 넣고 app/views/home/contact.html.erb으로 렌더링하십시오.

또는 fl00r 같은

대답 :

<%= render :file => '/homes/contact' %> 
+2

문제는 새로운 유스 케이스가 길어지기 시작했지만 컨벤션이 진행되고 있다는 것입니다. 고려하십시오 : 클라이언트쪽에있는 일류 컨트롤러에 속하는 자산 폴더에 js 템플릿이 있습니다. 서버 측보기에서 이러한 템플릿을 미리 렌더링하고 싶습니다. 따라서 서버 측에서 이것은 부분적인 것입니다. 클라이언트 쪽에서는보기입니다. Rails는'_'없이 부분을 인식하지 못하지만 스프로킷은 앞에'_'가있는 템플릿을 컴파일하지 않습니다. 인생은 관습보다 복잡합니다^o^// – Ziggy

3

을 eteubert가 지적 하듯이, 레일의 장점 중 하나는 자기 의견을 고집하는 성격이다. 당신이 여기서하려고하는 것은 당신의 의지에 따라 그것을 굽히는 것입니다. 하지마. 부분적으로 다른 페이지의 내용을 렌더링해야하는 경우 규칙을 준수하고 원본 페이지에서 부분을 추출해야합니다. 예를 들어 해당 페이지에 양식이있는 경우 부분으로 추출하고 원본 페이지에서 부분을 렌더링하게하십시오.

레일과 싸우려는 노력이 줄어들수록 쉬운 일이 될 것입니다.

관련 문제