2012-03-16 14 views
8

Bir görünümdeysem, şu anda o görünümde temsil edilen yakut nesnenin kimliğine nasıl erişebilirim?Geçerli ray nesnelerine nasıl girilir javascript

E.g. blah.com/jobs/1 adresindeyim 1 nasıl alabilirim?

Geçerli URL'yi kırpmayı düşündüm ama çok iç içe kaynaklara sahip olduğum için çok kırılgan görünüyor. Düşünebildiğim tek diğer kolay yol, gizli bir alana sahip olmaktır, ancak herhangi bir formun olmadığı bir gösteri sayfasında gizli bir girişe sahip olmak saçma görünüyor.

cevap

10

URL'yi ayrıştırmanın kötü bir fikir olduğunu, açıkça bir yere sağlamanızın daha doğru olduğuna inanıyorum.

HTML'de standart bir öğeye data-job-id özniteliği ekleyebilirsiniz, belki de <body>.

var id; 
var $body = $('body'); 
if(id = $body.data('job-id')) 
    // Do some job things. 
else if(id = $body('user-id')) 
    // Do some user things. 

ve hala HTML5 uyumlu olurdu ve gizli girişler ile ilgili muck olmazdı: Sonra JavaScript böyle şeyler yapabilirdi.

Tabii ki <body>'u kullanmanız gerekmiyor, HTML'iniz muhtemelen bilinen bir id ile bazı üst düzey bir konteynere sahip.

3

Sadece <% = params [: id]%> hile yapmaz mı?

+0

'<% = parametrelerini [: id]%>' hile yok – Francisco

4

şunlardan birini öneririm:

Jamsi önerilen olarak
  1. , doğrudan javascript <%= params[:id] %> veya <%= @job[:id] %> şunlardır:

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

  2. sizin javascript ayrı ise Dosya, Mu'nın tavsiyesine uyun. Görünümünüzün html etiketlerinden birine <%= @job[:id] %> ekleyin ve sorgulayın.

1

Hazırlanmış olan yanıtlardan oluşan eksiksiz bir örnek.

<body <%= "data-params-id=#{params[:id]}" if params.has_key?(:id) %> > 

Bu da aşağıdaki ile ulaşılabilir:

params[:id] ve vücut elemanı kullanma

, aşağıdaki satır içi deyimi bir düzen dosyada jenerik kullanılabilecek bir data-params-id niteliği, üretecek

JavaScript:

var dataId = document.body.getAttribute('data-params-id'); 

jQuery:

var dataId = $('body').data('params-id'); 
İlgili konular