我已将Rails 2应用程序迁移到Rails 3.但现在我遇到了以下问题。在我的一个视图文件中,我调用以下javascript(使用JQuery):
$.getJSON("<%= url_for(:controller => :visit_types, :action => :get_color)%>" + '/' + calEvent.visit_type_id, function(data) { calEvent.color = data;});
加载页面时,我收到错误:
没有路线匹配{:controller =&gt;“visit_types”,:action =&gt;“get_color”}
rake routes
输出:
/visit_types/get_color/:id(.:format) {:controller=>"visit_types",:action=>"get_color"}
确实如此。我未在:id
电话中传递url_for()
。但它在Rails 2中这是可能的。我该如何解决这个问题?
答案 0 :(得分:0)
我看到你在javascript中手动添加id。 你应该写:
<%= url_for(:controller => :visit_types, :action => :get_color, :id => calEvent.visit_type_id)%>
如果您运行rake routes
,通常也会在前面看到一个字符串,此字符串是您可以使用的名称,而不是通用url_for
(只需附加_url
或{{ 1}}),在你的情况下,这将是
_path
我发现这种形式更具表现力。另请注意,您可以在路由文件中提供更好或更具体的名称。
希望这有帮助。