仅在使用ajax时导出路由错误

时间:2013-02-24 23:22:24

标签: javascript ajax ruby-on-rails-3

我的投票链接通常有效,除非链接是通过ajax部分呈现的。当通过JavaScript部分渲染时,我得到一个在firebug中可见的路由错误,否则没有错误。

没有萤火虫我知道有一个错误,因为当我尝试添加新的制造商时没有添加制造商。如果我手动刷新页面,则会出现链接和新制造商并进行投票。

所以基本上使用ajax打破了投票链接。

rake routes:

vote_car_manufacturer POST   /cars/:car_id/manufacturers/:id/vote(.:format)                manufacturers#vote

视图:

<%= link_to '+', vote_car_manufacturer _path(car_id: @car.id, manufacturer_id: manufacturer.id, type: "up"), method: "post" %>

萤火:

No route matches {:action=>"vote", :controller=>"manufacturers", :car_id=>1, :manufacturer_id=>29, :type=>"up"}

使用ajax时,是否必须以不同方式实现投票链接?

更新

通过反复试验让它半工作。改变:

<%= link_to '+', vote_car_manufacturer _path(car_id: @car.id, manufacturer_id: manufacturer.id, type: "up"), method: "post" %>

为:

<%= link_to '+', vote_car_manufacturer _path(@car.id, manufacturer.id, "up"), :method => :post %>

现在它说找不到没有ID的制造商所以我还在调试。

2 个答案:

答案 0 :(得分:0)

你谈的是ajax电话,但是

:remote => true 

不在 link_to 中, 如文档中所指定:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html

答案 1 :(得分:0)

解决方案非常简单。首先运行rake路由,并确保以正确的格式提供路由请求的参数。

在我的情况下,参数应该是vote_car_manufacturer _path(@ car.id,id:manufacturer,type:“up”)