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 ...
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
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