我的投票链接通常有效,除非链接是通过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的制造商所以我还在调试。
答案 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”)