Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么rails不能识别这条路线?(我做错了什么?制作点击计数器)_Ruby On Rails_Ruby_Routes - Fatal编程技术网

Ruby on rails 为什么rails不能识别这条路线?(我做错了什么?制作点击计数器)

Ruby on rails 为什么rails不能识别这条路线?(我做错了什么?制作点击计数器),ruby-on-rails,ruby,routes,Ruby On Rails,Ruby,Routes,我在做一个点击计数器,也就是说,当用户点击一个按钮时,我们要计算点击次数。在我的例子中,用户正在访问优惠券页面,我想计算她单击打印按钮的次数 为了进行设置,我创建了一个单击模型 class Click < ActiveRecord::Base belongs_to :coupon end 然后ads 1单击的按钮: <%form_remote_tag :url => coupon_clicks_path(@coupon) do %> <% submit_t

我在做一个点击计数器,也就是说,当用户点击一个按钮时,我们要计算点击次数。在我的例子中,用户正在访问优惠券页面,我想计算她单击打印按钮的次数

为了进行设置,我创建了一个单击模型

class Click < ActiveRecord::Base
    belongs_to :coupon
end
然后ads 1单击的按钮:

<%form_remote_tag :url => coupon_clicks_path(@coupon) do %>
<% submit_tag 'click!' %>
<% end %> 

然后我浏览到/优惠券/4/点击。。。。它给了我一个错误,说它找不到页面。我做错了什么

首先,了解您使用的rails版本会很有趣,因为有些东西看起来像rails 2,但rails 3已经过时多年了。此外,我不确定为什么要将其设置为关联,而单击计数可能只是模型的一个属性,但我在这里看到了两个错误:

首先,确保您的优惠券模型已实现其关联的一方:

class  Coupon< ActiveRecord::Base
    has_one :click
end
然后更改表单标签,使其如下所示:

<%= form_tag( coupon_clicks_path(@coupon) ) %>
或者,如果您真的想通过ajax实现这一点:

<%= form_tag(coupon_clicks_path(@coupon), :remote => true) %>

正如@Matthew提到的,看起来您正在使用Rails 2,您的路线未被识别的原因是您在优惠券资源之后定义了它。它们都共享路由“/coups”的一部分,因此资源的REST路由将覆盖“coups/:id/clicks”

正如routes.rb默认注释中所述:优先级基于创建顺序,首先创建->最高优先级


因此,若要获得更高优先级的“优惠券/:id/点击”路线,请将其移动到routes.rb文件的顶部。

请完整发布实际错误。有几件事情可能会发生。我甚至不知道你可以在路线上做很多事情,我以为这只是一个模型。对不起,我忘了提到这都是Rails 2。我没有写这个项目,但是优惠券会有很多点击。但无论如何,总的来说,你的右击次数应该只是一个属性,我不知道为什么我决定这样做。。。谢谢你的反馈!
class  Coupon< ActiveRecord::Base
    has_one :click
end
resources :coupons do
    resources :clicks
end
<%= form_tag( coupon_clicks_path(@coupon) ) %>
<%= form_tag(coupon_clicks_path(@coupon), :remote => true) %>