2012-12-11 54 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