2011-09-03 44 views
1

我有一個張貼'想法'的表單。我已經設置使用ajax來做到這一點。 它基本上只是將發佈思想的想法和用戶附加到想法列表的末尾。在create.js.erblink_to從javascript中調用JavaScript時打破JavaScript?

$('#thoughts') 
    .append("<div class='thoughts'><%= @thought.user.name %><p><%= @thought %></p></div>"); 

使用這個JavaScript 這worksas預期,但是當我嘗試添加一個鏈接到誰張貼的思想,像這樣

$('#thoughts') 
    .append("<div class='thoughts'><%= link_to(@thought.user.name, @thought.user) %><p><%= @thought %></p></div>"); 

用戶它不追加思想想法的列表。它仍將其發佈到數據庫,但不顯示它。

任何幫助將不勝感激,謝謝。

回答

3

你必須使用escape_javascript這樣的:

$('#thoughts') 
    .append("<div class='thoughts'><%= escape_javascript(link_to(@thought.user.name, @thought.user)) %><p><%= @thought %></p></div>"); 

如果你不使用escape_javascript create.js.erb會生成以下代碼,不顯而易見的原因工作:

$('#thoughts') 
    .append("<div class='thoughts'><a href="/thoughts/1">Username</a><p>Thought</p></div>"); 
             #^
             # This is the problem, 
             # which is fixed by escape_javascript