我有一個Rails應用程序,它在檢查用戶訪問用戶的個人檔案頁面是否是當前用戶(使用ruby代碼)之後,根據條件邏輯的結果調用JavaScript方法,如下所示。從ruby傳遞信息到js腳本標記
有沒有一種方法可以將用戶的名字(在Ruby代碼中可用<%= @ user.name%>)傳遞給腳本標記,以便我還可以將它傳遞到被調用的javascript函數中(除了我通過的其他參數之外)。
/views/users/show.html.erb
<% if current_user?(@user) %> #@user represents the user who's profile page is being visited
<script type='text/javascript'>
$(document).ready(function() { #I want to get <%= @user.name %> inside here
var currentuser = true;
app.views.user_view.compTemplates(currentuser)});
</script>
<% else %>
...code ommitted...
<% end %>
更新:
第一個答案的建議之後對這個問題,我做了這個腳本標籤中。
var currentusername = <%= @user.name %>;
然而,一旦<%= @ user.name%>求值(爲「婆婆」,在該例子中),婆婆納在針對在JS代碼的第一時間,並且被註冊現在錯誤「婆婆納未定義」
謝謝,我想你做了什麼,並通過它作爲參數傳遞給compTemplates方法 - compTemplates(currentuser,用戶名) - 但thwne我在接收它的觀點做consolelog(用戶名),它表示用戶名(即已計算的實際用戶名,而不是變量userName)'未定義'。你能解釋爲什麼嗎? – BrainLikeADullPencil 2013-03-16 21:17:14
你能確認@user是否有名字? ('print @ user.inspect')也許在模板中(不是腳本部分)?另外,你是否嘗試過'escape_javascript'?你能檢查物體嗎? '警報(JSON.stringify(用戶名))'。我們試圖找出它失敗的地方。 – AdamT 2013-03-16 21:23:18
我這樣做var currentusername = <%= @ user.name%>;在show.html.erb頁面中,它說'Veronica'(@ user.name)在javascript控制檯中是未定義的。 – BrainLikeADullPencil 2013-03-16 22:35:36