7 Stimmen

Ein DIV ausblenden [Rails]

Ausblenden eines DIV wäre einfach genug in Javascript, aber gibt es einige Rails-y Weg, es zu tun? Ich kann denken, einige Möglichkeiten, es zu tun, indem Sie Javascript aus einer partiellen (.erb), natürlich, aber ich würde es vorziehen, keine Javascript überhaupt zu schreiben. Ist das möglich?

Bearbeiten: Die Seite ist geladen und ich möchte das DIV ausblenden nach (na ja, auf) einen Ajax-Aufruf, also bin ich in einem dieser render :update Blöcke.

0 Stimmen

Wie/wann soll sie versteckt werden? Beim Laden, nach einem Ereignis, oder nach einem Ajax-Aufruf?

0 Stimmen

Die Frage jetzt bearbeiten

0 Stimmen

Danke Luca. Warum ist es schlecht? Bitte erläutern Sie das, damit ich weiß, ob Sie Recht haben oder nur schimpfen.

11voto

Matt Darby Punkte 6254

Oder direkt in Ihrem Blickfeld:

Für eine klassenbezogene div:

<%= link_to_function "Toggle", "$('.some_div').toggle()" %>

Für ein ID-spezifiziertes div:

<%= link_to_function "Toggle", "$('#some_div').toggle()" %>

(beachten Sie das Rautenzeichen)

Punkt zu klassenspezifischem Div und Hash zu id-spezifischem Div hinzugefügt

0 Stimmen

Ja, JS pur. Ausblenden eines div ist definitiv JS's Domäne; Weitergabe hin und her an den Server, um ein div zu verbergen ist Overkill.

0 Stimmen

link_to_function wurde in Rails 4.0.2 entfernt.

6voto

ben lemasurier Punkte 2572
render :update do |page|
    page.hide 'div_id'
end

Sie können dies in Ihren respond_to-Block oder eine RJS-Vorlage einfügen.

Ein weiterer hilfreicher Tipp, der dieselbe Syntax verwendet:

render :update do |page|
    page << 'arbitrary javascript code goes here.'
end

3voto

Andrew Vit Punkte 18653

Rendering einer RJS-Aktualisierung von Ihrem Controller:

respond_to do |format|
  format.html
  format.js { render(:update) { |page| page.hide('element_id') } }
end

Sie können sich über die API für andere RJS-Antworten.

0 Stimmen

Fantastisch, großartige Antwort. Ich danke dir.

1voto

seanb Punkte 6859

Ich kenne mich nicht wirklich mit Rails aus, aber können Sie einfach etwas wie style="display:none;" in das div-Tag ausgeben?

0 Stimmen

Ich kenne auch keine Schienen :), aber ich habe das Gefühl, dass ich nicht... Ich kann nur Sachen berühren, die innerhalb einer DIV oder anderen ID adressierbaren Teil der HTML-Seite ist.

0 Stimmen

Schade :( - schätze, ich würde wahrscheinlich jquery aus der Toolbox an diesem Punkt dann bekommen.

0 Stimmen

Nah, es hat Prototyp und scriptalicious (sp.) standardmäßig, aber auch mit einfachen JS ist es einfach. Aber jetzt mit den Antworten hier (oben) Ich bin bereit zu gehen.

1voto

Eduardo Punkte 11
<%= link_to_function "Toggle", visual_effect(:toggle_blind, "some_div") %>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X