Wie Sie in JavaScript auf die aktuelle Objekt-ID der Schiene zugreifen

8

Wenn ich in einer Ansicht bin, wie kann ich auf die ID des Ruby-Objekts zugreifen, das derzeit von dieser Ansicht dargestellt wird?

z. Wenn ich auf blah.com/jobs/1 bin, wie bekomme ich 1?

Ich habe darüber nachgedacht, die aktuelle URL zu trimmen, aber das erscheint mir viel zu spröde, vor allem, wenn ich Ressourcen verschachtelt habe. Der einzige andere einfache Weg, den ich mir vorstellen kann, ist ein verstecktes Feld zu haben, aber es erscheint albern, eine versteckte Eingabe auf einer Show-Seite zu haben, auf der es keine Formulare gibt.

    
link664 16.03.2012, 07:13
quelle

4 Antworten

10

Sie haben Recht, dass das Parsen der URL eine schlechte Idee ist. Sie sollten sie lieber irgendwo angeben.

Sie könnten ein data-job-id -Attribut an ein Standardelement im HTML-Code anhängen, vielleicht sogar <body> . Dann könnte Ihr JavaScript solche Dinge tun:

%Vor%

und Sie wären immer noch HTML5-konform, und Sie müssten nicht mit verborgenen Eingaben herumspielen.

Sie müssen natürlich nicht <body> verwenden, Ihr HTML hat wahrscheinlich einen Top-Level-Container mit einem bekannten id , so dass Sie stattdessen diesen verwenden könnten.

    
mu is too short 16.03.2012, 07:34
quelle
4

Ich würde eine der folgenden vorschlagen:

  1. Wie Jamsi vorgeschlagen hat, fügen Sie <%= params[:id] %> oder <%= @job[:id] %> direkt in Ihr Javascript ein:

    var id = <%= @job[:id] %>

  2. Wenn sich Ihr Javascript in einer separaten Datei befindet, folgen Sie Mu's Rat. Fügen Sie das <%= @job[:id] %> zu einem der HTML-Tags Ihrer Ansicht hinzu und fragen Sie es ab.

illiptic 16.03.2012 13:22
quelle
3

Würde nicht nur & lt;% = params [: id]% & gt; mach den Trick?

    
Jamsi 16.03.2012 11:28
quelle
1

Hier ist ein vollständiges Beispiel, das aus den bereits gegebenen Antworten besteht.

Mit dem params[:id] und dem body-Element erzeugt die folgende Inline-Anweisung ein data-params-id -Attribut, das generisch in einer Layout-Datei verwendet werden kann:

%Vor%

Dies kann dann wie folgt aufgerufen werden:

JavaScript:

%Vor%

jQuery:

%Vor%     
cweston 24.06.2015 15:51
quelle