2011-03-16 4 views
4

J'ai un formulaire de recherche simple qui ressemble à quelque chose comme:Rails 3 - rendre js.erb partielle

app/views/Recherche/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> 

* app/contrôleurs /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 

J'ai alors un modèle js.erb: * app/views/Recherche/_query.js.erb *

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

Cependant, je ne vois rien à mettre dans le div 'search-results'. Ai-je besoin d'une sorte de modèle pour rendre "@summaries"? Si oui, quel serait-il nommé et où pourrais-je le placer (c'est-à-dire app/views/search?) (J'utilise jquery et rails 3)

Merci.

+1

Je ne pense pas que jQuery a une méthode '.update'. Essayez '.html'? Est-ce que Firebug lance une erreur dans la console? – Dogbert

+0

Je suis passé à .html, pas de différence. qu'est-ce que "render (@summaries)" va rendre? Je devine que je manque une vue ou partielle pour cela. – codecraig

Répondre

10

vous devez renommer votre fichier modèle:

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

underscore est inutile

+1

Oui, cela aide. J'ai alors mis à jour query.js.erb pour faire ceci: $ ('# search-results'). Html ("<% = escape_javascript (render (: partial => 'résumés'))%>"); Et puis j'ai créé une application/views/search/_summaries.html.erb – codecraig

+0

Salut, je veux savoir ce que cela signifie: "rails peut rendre js dans le fichier erb"? Est-ce que cela signifie "ujs"? – why

Questions connexes