Ruby on rails RoR:I';我在做一个简单的动作链接时遇到困难

Ruby on rails RoR:I';我在做一个简单的动作链接时遇到困难,ruby-on-rails,rest,Ruby On Rails,Rest,我正在尝试链接到entries控制器中的action addData。我构建了如下链接: <%= link_to image_tag (w.link, :border =>0) ,:controller => :entries, :action => :addData %> 我很确定这是因为我有一个restful设计。有办法解决这个问题吗?感谢阅读。您是否正确定义了此操作的路由addData? 顺便说一下,试试这个: <%= link_to image_

我正在尝试链接到entries控制器中的action addData。我构建了如下链接:

<%= link_to image_tag (w.link, :border =>0) ,:controller => :entries, :action  =>  :addData %>

我很确定这是因为我有一个restful设计。有办法解决这个问题吗?感谢阅读。

您是否正确定义了此操作的路由addData? 顺便说一下,试试这个:

<%= link_to image_tag (w.link, :border =>0) ,{:controller => :entries, :action  =>  :addData} %>
0),{:controller=>:entries,:action=>: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'

啊,我不知道我必须定义一条路线。所以我不能像这样链接而不定义路由?路由基本上只是url相对部分映射到的正则表达式。映射从routes文件的顶部开始。因此,如果它遇到任何可以映射此url的正则表达式,它将以该格式处理它。因此,map.resources部分应该位于顶部,map.connect部分(默认格式)应该位于下面。如果找不到url的任何指定路由,它将尝试将其映射到默认格式(即map.connect部分)。希望解释能有所帮助。请注意,您应该修复空格
a(b,c)
可能会引起一些抱怨,请使用
a b,c
a(b,c)
而不是两者都使用!
  map.connect ':controller/:action/:id.:format'
  map.connect ':controller/:action/:id'