0
Eigentlich möchte ich Javascript-Code in meine Rails-Anwendung ausführen.Implementieren zeigen/verbergen Funktionalität mit Javascript in Rails-Anwendung
Ich habe eine neue Datei erstellt, die custom.js in "app/assets/javascripts" ist.
custom.js
$(document).ready(function() {
$("div#test").hide();
$("a").click(function(event) {
event.preventDefault();
$("div#test").fadeToggle();
});
});
Ich habe auch, // = custom in application.js Datei benötigt aber immer noch der Code nicht gleich am Anfang verstecken.
application.js
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require nicetitle
//= require custom
index.html.erb
<a href="#" class="toggle-formed" style="float: right;" >Search</a>
<div id="sample" class="<%= @xvaziris_data.present? ? 'hidden' : '' %>">
<%= form_tag xvaziris_path, method: 'get', class: "form-group", role: "search" do %>
<p>
<center><%= text_field_tag :search, params[:search], placeholder: "Search for.....", class: "form-control-search" %>
<%= submit_tag "Search", name: nil, class: "btn btn-md btn-primary" %></center>
</p>
<% end %><br>
<% if @xvaziris.empty? %>
<center><p><em>No results found for.</em></p></center>
<% end %>
</div>
general.scss
.hidden {
display: none;
}
Die oben custom.js Code, wenn ich in index.html platzieren .erb unter JavaScript Script-Tag funktioniert es gut. Aber ich möchte mich nicht in jedem anderen Controller/Index wiederholen, da die Rails dem DRY-Prinzip folgen, das sich NICHT WIEDERHOLT.
Search.js
$(document).on('page:change', function() {
$("div#sample").hide();
// | === HERE
$("a.toggle-formed").click(function(event) {
event.preventDefault();
$("div#sample").fadeToggle();
});
});
Irgendwelche Vorschläge sind herzlich willkommen.
Vielen Dank im Voraus.
Ihre custom.js ist in Ihrer Seite verfügbar, wenn Sie application.js einlegen – uzaif
Danke für die Antwort. custom.js-Dateien befinden sich unter "app/assets/javascripts" und sind eine separate Datei. –
ja, aber es muss in '
mehr @Joe's answer Hinzufügen:
Also, wenn Sie für die Suche implementieren, müssen Sie es so machen kann:
Fügen Sie eine Klasse
hidden
in Ihrem CSS in der Klasse schreiben:Wenn also beim Laden der Seite überprüft wird, ob die Suchdaten vorhanden sind, fügen Sie keine Klasse
hidden
hinzu oder fügen Sie sie hinzu. Beispiel:So wird dies angezeigt, wenn die Suchdaten vorhanden sind.
Hoffe, das hilft.
Quelle
2016-07-02 09:56:30 Deep
Danke für die Antwort. Aber ich bekomme diesen Fehler undefiniert lokale Variable oder Methode 'search_data 'für # <#: 0x00000009240dc0> –
Der' Such_Daten' Name war nur ein Beispiel, bitte ersetzen Sie ihn durch die Instanzvariable, in der Sie die haben Daten von Ihrem Controller. – Deep
Danke. Ich füge search.js als Referenz hinzu. Braucht es irgendwelche Änderungen? Erneut schaltet er sich zurück, wenn ich auf die Suche klicke ... –