2011-02-24 21 views
0

在我的RoR應用程序中,用戶從彈出框中選擇一個選項,並將選定的值傳遞給我父窗體中的隱藏字段。 問題是將包含html字符的值(例如<a href= "">)傳遞給父窗體。ruby​​ on rails/javascript - 轉義html字符時出錯

以我彈出,我有一個鏈路如下其中穿過的值到主窗體:

彈出代碼:

<% @users.each do |user| %> 
    <%= link_to_function "PassValue", "sendValue('"+ user.location+ "')" %> 
    <% end %> 

的application.js:

function sendValue(location){ 
    window.opener.document.getElementById('submission_user_attributes_location').value = location; 
    } 

位置從數據庫中檢索的值可以包含像''這樣的html字符,這就是我的sendValue函數不起作用的地方。

請有人可以幫我這個。

許多許多在此先感謝您的幫助:)

回答

1

請不要使用obstrusive的JavaScript。嘗試使用非隱藏式JavaScript重寫此代碼,它將防止您在將來遇到更多問題。看到這個railscast更多信息:http://railscasts.com/episodes/205-unobtrusive-javascript

這是說,你可以通過你的user.locationURI.encode,或escape quotes manualy或使用escape_javascript編碼解決您的問題。

我最喜歡的解決方案是escape_javascript。從documentation

escape_javascript - 逃生載體 收益和單引號和雙引號 爲JavaScript片段。

# File actionpack/lib/action_view/helpers/javascript_helper.rb, line 50 
def escape_javascript(javascript) 
    if javascript 
    javascript.gsub(/(\\|<\/|\r\n|[\n\r"'])/) { JS_ESCAPE_MAP[$1] } 
    else 
    '' 
    end 
end 
+0

Yupee,它的工作!非常感謝Marcgg,我最終選擇了escape_javascript方法。但我會牢記你的建議。乾杯.. – Kim 2011-02-24 13:30:45