【发布时间】:2011-08-17 15:21:02
【问题描述】:
我正在创建一个 ajax 请求并构建 url,如下所示:
function submitYear(year){
new Ajax.Request('update_make/'+year, { method: 'get'});
}
当我对我的 car_infos 控制器执行新操作时,http://localhost:3000/car_infos/new 这个 Ajax 请求工作正常。我收到一个请求:
开始 GET "/car_infos/car_infos/update_make/2011"
路线匹配,一切顺利。但是,如果创建时出现错误,则 url 变为 http://localhost:3000/car_infos,然后当我的 ajax 请求触发时,我会收到路由错误:
开始获取“/update_make/2002” 没有路线匹配“/update_make/2002”
以下是创建失败时我的控制器中发生的情况:
format.html { render :action => "new" }
我明白为什么会出现路由错误,因为我没有将路由设置为 /update_make/。这是我的路线。
match 'car_infos/update_make/:year', :controller => 'car_infos', :action => 'update_make'
所以两个问题。
为什么当 url 从 car_infos/new 变为 car_infos 时我的 get 请求会改变
我该如何解决这个问题,所以当我在 javascript 中创建 url 时它适用于这两种情况?我不认为为 /update_make 设置路线是答案。如果我重定向到 /new,那么我会丢失字段值和错误消息。
谢谢,
【问题讨论】:
标签: ruby-on-rails-3 url routes