RoR:我在做一个简单的动作链接时遇到了问题
我想链接到条目控制器中的动作addData。我已经构建的链接是这样的:RoR:我在做一个简单的动作链接时遇到了问题
<%= link_to image_tag (w.link, :border =>0) ,:controller => :entries, :action => :addData %>
但是当我点击该链接时,我得到这个错误:
Couldn't find Entry with ID=addData
我敢肯定这是因为我有一个宁静的设计。有没有解决这个问题的方法?谢谢阅读。
Rails已经完全迁移到RESTful设计。这意味着要使用非标准操作,您必须将它们添加到您的资源config/routes.rb
。
如果他们在所有资源上操作,将它们添加到散列表:collection => {:addData => :post}
如果您有一个资源使用ID为:member
的单个资源。 给你一些它。
map.resources :entries, :collection => {:addData => :post}
要使用映射的任何行动,任何控制器的老风格,你可以将以下两行添加到您的config/routes.rb
map.connect ':controller/:action/:id.:format'
map.connect ':controller/:action/:id'
您是否已经正确定义了此操作addData的路径? 顺便试试这个:
<%= link_to image_tag (w.link, :border =>0) ,{:controller => :entries, :action => :addData} %>
啊我不知道我必须定义一条路线。所以我不能没有定义路线就这样链接? – ben 2010-07-11 14:20:30
路由基本上不过是URL的相对部分映射到的正则表达式。映射从路由文件的顶部开始。因此,如果遇到任何可以映射此URL的正则表达式,它将以该格式处理它。所以,map.resources部分应该在顶部,而map.connect部分(默认格式)应该在下面。如果它没有找到任何指定的url路由,它会尝试将其映射到默认格式(即map.connect部分)。希望解释有帮助。 – 2010-07-12 19:33:48
作为一个说明,您应该解决您的空间'A(B,C )'可能会引起一些抱怨,使用'ab,c'或'a(b,c)'而不是两个! – 2010-07-11 17:45:35
非常感谢您的帮助! – ben 2010-07-12 01:01:37