2014-04-25 33 views
0

我有一個動態爲edit_user_dynamic_id的表單。我如何在jQuery中訪問它。以下是app.js中的代碼,但它似乎不起作用。在jQuery中訪問rails的動態表單ID

$(function() { 
    $('#edit_user_<%= @user.id %>').submit(function(){ 

    }) 
}) 
+0

@adeneo:對不起,這是我的錯誤。 – Shane

+0

如果你把這段代碼放在視圖文件中,而不是在JavaScript文件中,該怎麼辦? – zwippie

+0

將「

<%= @user.id %>
」添加到某個地方的頁面上,您看到了什麼? –

回答

1

問題是您的外部JavaScript文件被視爲一個靜態文件,並沒有被服務器端腳本處理。

選項1:在視圖中,輸出與腳本標籤用戶ID:

<script>var userId = "<%= @user.id %>";</script> 

現在,所有外部JavaScript文件就能得到userId

$('#edit_user_' + userId).submit(function(){ 

}) 

選項2:使用starts with選擇器來匹配以edit_user_開頭的ID的任何元素:

$('form[id^="edit_user_"]').submit(function(){ 

}); 
+0

第二個工程,你能解釋我爲什麼我的JS文件被視爲靜態,以及如何使其服務器端。 – Shane

+0

JavaScript,CSS,圖像等通常不會被服務器端語言處理,因爲它們通常不需要服務器端變量。如果他們這樣做,最常見的解決方案就是在答案中輸出變量。如果這不起作用,請檢查HTML源代碼以查看是否應該輸出該變量。在任何其他JavaScript之前也有它。 – MrCode

+0

這是鐵軌方式,我覺得很奇怪。任何我們可以在純JS文件上執行ruby的方式。 – Shane