2016-04-12 5 views
1

Ich möchte die Suchergebnisse dynamisch anzeigen, indem Sie die Aktion anfordern, die ein Javascript zurückgibt, das die partielle lädt. Ich habe etwas gelesen und escape_javascript scheint wie ein richtiger Weg, es zu tun. Aber nichts zeigt sich und ich bekomme 500 interne Serverfehler. HierRails: Laden partiell mit jQuery

ist ein Code

in Controller:

def search 
    @user = User.find_by email: params[:email] 

    respond_to do |format| 
     if @user && @user.user_type_type == "Employee" 
     format.js 
     else 
     format.js {render "failed_search"} 
     end 
    end 
    end 

Ansicht mit dem Suchformular:

<div id="search-employee"> 
    <%= form_tag({controller: "employees", action: "search"}, method: :get, remote: true) do %> 
     <%= label_tag 'email', "Search for:" %> 
     <%= text_field_tag 'email'%> 
     <%= submit_tag("Search") %> 
    <% end %> 

    <div id="search-result" class="row"> 
    </div> 
</div> 

js durch die Aktion zurück (funktioniert, wenn ich Klartext setzen, anstatt zu html der austretenden js)

$('#search-result').html("<%= escape_javascript(render :partial => 'employees/search_result') %>"); 

Ich würde dir das Partielle zeigen, aber es wird nicht gerendert, selbst wenn ich dort Klartext lege, also ist es das nicht.

Hier ist die Ausgabe von der Konsole, in der Tat sieht es informativ aus, ich muss es verpasst haben.

Completed 500 Internal Server Error in 10ms (ActiveRecord: 0.2ms) 

ActionView::Template::Error (Missing partial employees/_search_result.html.erb with {:locale=>[:en], :formats=>[:js, :html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: 
    * "/home/johnny/Desktop/ror/pub_crawler/pub_crawler_1.2/app/views" 
    * "/home/johnny/.rvm/gems/[email protected]/gems/devise-3.5.6/app/views" 
): 
    1: //does not work 
    2: $('#search-result').html("<%= escape_javascript(render :partial => 'employees/search_result.html.erb') %>"); 
    3: 
    4: $('#search-result').html('<div class="col-3-md"><%= @user.user_type.name %></div> <div class="col-3-md"><%= @user.user_type.surname %></div> <div class="col-3-md"></div>'); 
    app/views/employees/search.js.erb:2:in `_app_views_employees_search_js_erb__3438283462284537863_70351967525560' 
    app/controllers/employees_controller.rb:12:in `search' 

EDIT: ok, ich bin ein Idiot, es war ein Tippfehler in Dateinamen ...

Antwort

0

Könnten Sie den Ausgang Ihrer Schienen Konsole und den SEARCH_RESULT Teil posten? Ich vermute, dass Rails entweder Ihre Teildatei nicht finden kann, oder der Teil versucht, eine Variable zu verwenden, die nicht definiert ist.

+0

Ich werde es veröffentlichen, wenn ich zu Hause bin. Aber nichts erscheint in #search_result div und es funktioniert nicht einmal mit reinem Text in Teil. Also muss es etwas zwischen .js.erb und dem partiellen – FunkyFrankie

+0

Ich stelle mir vor, dass die Ausgabe von deiner Rails-Konsole (das heißt, wo auch immer dein "Rails-Server" gestartet wurde) informativ sein wird. – Brian