0

我已将 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=>"visit_types", :action=>"get_color"}

rake routes输出:

/visit_types/get_color/:id(.:format)    {:controller=>"visit_types",:action=>"get_color"} 

是真的。我没有通过:id电话url_for()。但在 Rails 2 中这是可能的。我该如何解决这个问题?

4

1 回答 1

0

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

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

如果您运行rake routes,您通常还会在前面看到一个字符串,并且该字符串是您可以使用的名称而不是通用名称url_for(只需附加_url_path),在您的情况下,这将类似于

get_color_visit_types_url(calEvent.visit_type_id)

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

希望这可以帮助。

于 2012-08-12T17:30:56.393 回答