url_for Rails 3和Rails 2改变了吗?

时间:2012-08-12 12:54:57

标签: ruby-on-rails ruby-on-rails-3 url-for

我已将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中这是可能的。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我看到你在javascript中手动添加id。 你应该写:

<%= url_for(:controller => :visit_types, :action => :get_color, :id => calEvent.visit_type_id)%>

如果您运行rake routes,通常也会在前面看到一个字符串,此字符串是您可以使用的名称,而不是通用url_for(只需附加_url或{{ 1}}),在你的情况下,这将是

_path

我发现这种形式更具表现力。另请注意,您可以在路由文件中提供更好或更具体的名称。

希望这有帮助。