2012-12-11 56 views
0

我將rails rails的應用程序升級到rails 3.2.6。 link_to_function不會生成正確的html。link_to_function無法正常工作

以下輔助方法。 。 。

link_to_function(name, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")) 

正在生成...

<a href="#" onclick="add_fields(this, &amp;quot;quick_facts&amp;quot;, &amp;quot;&amp;lt;div class=\'quick_fact\'&amp;gt;\n &amp;lt;div class=\'grid_4 prefix_1\'&amp;gt;\n &amp;lt;label for=\&amp;quot;organization_quick_facts_attributes_new_quick_facts_quick_fact\&amp;quot;&amp;gt;QuickFact&amp;lt;\/label&amp;gt;\n &amp;lt;br&amp;gt;\n &amp;lt;select class=\&amp;quot;quick_fact_select\&amp;quot; id=\&amp;quot;organization_quick_facts_attributes_new_quick_facts_quick_fact\&amp;quot; name=\&amp;quot;organization[quick_facts_attributes][new_quick_facts][quick_fact]\&amp;quot;&amp;gt;&amp;lt;option value=\&amp;quot;\&amp;quot;&amp;gt;&amp;lt;\/option&amp;gt;\n &amp;lt;option value=\&amp;quot;Hours\&amp;quot;&amp;gt;Hours&amp;lt;\/option&amp;gt;\n &amp;lt;option value=\&amp;quot;Serving\&amp;quot;&amp;gt;Serving&amp;lt;\/option&amp;gt;\n &amp;lt;option value=\&amp;quot;Insurance Accepted\&amp;quot;&amp;gt;Insurance Accepted&amp;lt;\/option&amp;gt;\n &amp;lt;option value=\&amp;quot;Features\&amp;quot;&amp;gt;Features&amp;lt;\/option&amp;gt;\n &amp;lt;option value=\&amp;quot;Services Provided\&amp;quot;&amp;gt;Services Provided&amp;lt;\/option&amp;gt;&amp;lt;\/select&amp;gt;\n &amp;lt;br&amp;gt;\n &amp;lt;\/div&amp;gt;\n &amp;lt;div class=\'clear\'&amp;gt;&amp;lt;\/div&amp;gt;\n &amp;lt;div class=\'grid_4 prefix_1\'&amp;gt;\n &amp;lt;label for=\&amp;quot;organization_quick_facts_attributes_new_quick_facts_content\&amp;quot;&amp;gt;Content&amp;lt;\/label&amp;gt;\n &amp;lt;br&amp;gt;\n &amp;lt;input id=\&amp;quot;organization_quick_facts_attributes_new_quick_facts_content\&amp;quot; maxlength=\&amp;quot;200\&amp;quot; name=\&amp;quot;organization[quick_facts_attributes][new_quick_facts][content]\&amp;quot; size=\&amp;quot;200\&amp;quot; type=\&amp;quot;text\&amp;quot; /&amp;gt;\n &amp;lt;br&amp;gt;\n &amp;lt;\/div&amp;gt;\n &amp;lt;div class=\'clear\'&amp;gt;&amp;lt;\/div&amp;gt;\n &amp;lt;div class=\'grid_2 prefix_1 exempt\'&amp;gt;\n &amp;amp;nbsp;\n &amp;lt;a href=\&amp;quot;#\&amp;quot; class=\&amp;quot;remove_temp_qf\&amp;quot;&amp;gt;remove&amp;lt;\/a&amp;gt;\n &amp;lt;\/div&amp;gt;\n&amp;lt;\/div&amp;gt;\n&amp;quot;); return false;">Add Another QuickFact</a> 

時,這個網站被渲染,功能的onclick沒有被調用,這裏是錯誤。

syntax error 

add_fields(this, &quot;quick_facts&quot;, &quot;&lt;div class=\'quick_fact\'&gt;... 

quick_facts# (line 1, col 17) 

有什麼想法解決這個問題?

+3

您對'h()'方法的調用正在轉義報價字段。刪除它,然後重試。 – Magicmarkker

+1

請注意,'link_to_function'已經犧牲了UJS的神:https://github.com/rails/rails/pull/5922。它已被棄用,並將在Rails 4中刪除。我必須承認我很高興看到它。 – tokland

回答

1

Rails 3中的#h方法已更改,Rails 3現在會自動轉義「不安全」字符串。有關更多信息,請參閱this question