2009-10-09 3 views
2

내 페이지의 부분을 업데이트하려면 link_to_remote를 사용하고 있습니다. 문제는 레일스가 내 부분을 찾지 못한다는 것입니다.link_to_remote 이후에 누락 된 템플릿

나는 컨트롤러 방법에 내 부분 (AN html.erb 파일)의 전체 경로를 지정하고 있습니다 :

def my_method 
create something 

render :partial => '/shared/partials/my_partial_form', :layout => 'false' 
end 

나는 "일"때문에, 컨트롤러 방법은 타격을 받고있다 알고됩니다 만들었습니다. "Template missing [:controller_name]/[:method_name].js.erb not found" 오류가 발생합니다.

레일즈가 js.erb에 대한 기본 경로를 사용하는 것으로 보이는 이유는 누구든지 설명 할 수 있습니까?

미리 감사드립니다.

+0

분당이 문제가 있습니다. 혹시 해결책을 얻었습니까? –

답변

2

레일스가 JS 형식에 응답하고 있습니다. render : partial은 액션 당 액션의 1 렌더링/리디렉션 호출로 간주되지 않습니다. 적절한 렌더링이나 리디렉션 호출이 없으면 Rails는 형식, 컨트롤러 및 동작을 기반으로 기본 인수로 render를 호출합니다.

렌더링 : 부분 만 호출자에게 텍스트를 반환하지만 응답을 작성하지 않습니다. 이 경우 부분이 HTML로 렌더링되지만 아무 것도 수행되지 않습니다. 추신 : layout => false 옵션은 부분을 렌더링 할 때 불필요합니다.

템플릿을 통해 render : update 또는 RJS 파일을 사용하려고합니다.

def my_method create something 

    render :update do |page| 
    page.replace_html :body, :partial => '/shared/partials/my_partial_form'  
    end 
end 

이 앱/뷰/자원/my_method.rjs 파일을 작성하고 채울 수있는 RJS 경로를가는 : 당신이 전체 웹 페이지를 대체 할 가정

은 짧은 버전은 같은 것을 할 것입니다 그것과 함께

page.replace_html :body, :partial => '/shared/partials/my_partial_form' 
+1

응답 해 주셔서 감사합니다. 나는이 코드베이스의 다른 곳에서 div를 업데이트하기 위해 link_to_remote를 사용했다. 이러한 경우 메서드의 마지막 줄이 렌더링 된 한 : 부분적으로 문제가 없습니다. 이 점이 다른 점을 이해하고 싶습니다. 가능한 범인 : 컨트롤러 상속 페이지의 플러그인 첫 제안을 시도했지만 동일한 오류를 반환합니다. 사실, 내가 시도한 모든 것들이 같은 곳에서 나를 떠나게한다. : the partial을 redirect_to root_url로 바꾸어도 다른 결과가 나타나지 않습니다. 레일스가 지시어를 유효한 것으로 인정하지 않기 때문입니다. –

+0

Rails가 JS 요청에 응답하면 javascript가 전송되어 브라우저에서 실행됩니다. 모든 루비 메소드는 마지막 명령문의 결과를 반환합니다. redirect_root_url은 요청 형식을 변경하지 않으므로 다시 말해서 자바 스크립트를 생성 할 템플릿을 명시 적으로 지정하지 않으면 Rails가 기본값을 렌더링합니다. Redirect_root_url을 사용하여 오류가 변경되지 않는 이유는 무엇입니까? – EmFi

+0

이것은 저에게 맞지 않습니다. 너를 위해 일 했니? 덕분에 –

0

/앞에 공유를 제거해보십시오.

render :partial => 'shared/partials/my_partial_form', :layout => 'false' 
+0

. 그것을 시도했다. 이 시점에서 나는 다른 오류 - 다른 것을 말해달라고한다. 가능한 소스 : 컨트롤러 상속 -이 메소드를 상위 컨트롤러 및 하위 컨트롤러에 넣으려고했습니다. 동일한 오류 - 한 페이지에 여러 양식을 처리하는 플러그인이 페이지에 있습니다. –

+0

이고 my_partial_form의 이름은 _my_partial_form.html.erb입니까? – Tilendor