2011-03-16 4 views
4

:레일 3 - 렌더링 부분 js.erb 내가 좋아하는 뭔가 보이는 간단한 검색 양식이

응용 프로그램/조회/검색/index.html.erb

<%= form_for @search, :as => :search, :remote => true, :url => {:action => "query"}, :html => {:id => 'search-form'} do |f| %> 
    ... 
<% end % 

<div id="search-results"></div> 

* 응용 프로그램/컨트롤러 * 응용 프로그램/조회/검색/_query.js.erb *

: /search_controller.rb*

def index 
    @search = SearchCriteria.new 
end 

def query 
    @search = SearchCriteria.new(params[:search]) 

     # otherwise, perform search... 
    @summaries = do_search @search 
    respond_to do |format| 
    format.js 
    end 
end 

나는 다음 js.erb 템플릿을

$('#search-results').update("<%= escape_javascript(render(@summaries)) %>"); 

그러나, 나는 아무것도 '검색 - 결과'사업부에 투입되는 표시되지 않습니다. "@summaries"를 렌더링하기 위해 일종의 템플릿이 필요합니까? 그렇다면,

덕분에 (내가 JQuery와 및 레일 (3)을 사용하고 있습니다)이 이름을 지정해야합니다 어디서 그것을 배치 할 (즉, 응용 프로그램/조회/검색?) 것.

+1

필요하지 않습니다. '.html'을 시도해보십시오. Firebug가 콘솔에 오류를 던집니까? – Dogbert

+0

.html로 전환했는데 차이가 없습니다. "render (@summaries)"는 무엇을 렌더링 할 것인가? 내가보기에 또는 부분적으로 실종되었다고 생각합니다. – codecraig

답변

10

당신은 당신의 템플릿 파일의 이름을 변경해야합니다

app/views/search/_query.js.erb => *app/views/search/query.js.erb 

밑줄 내가 jQuery를가`.update` 방법을 가지고 생각하지 않습니다

+1

예, 도움이됩니다. . $ ('#의 검색 결과') HTML ("<% = escape_javascript (렌더링 (: 부분 => '요약')) %>") 그때 나는이 작업을 수행하는 query.js.erb 업데이트; 그리고 난 다음 – codecraig

+0

안녕, 나는이 의미를 무엇을 알고 싶은 응용 프로그램/조회/검색/_summaries.html.erb 생성 : "레일 ERB 파일에 JS 렌더링 할 수 있습니다"? 이것은 "ujs"를 의미합니까? – why

관련 문제