Rails 3宁静的路线问题

时间:2011-04-28 18:39:00

标签: ruby-on-rails ruby-on-rails-3 rest

以下链接适用于我的应用:

<%= link_to "invitation", :controller => :invitations, :action => :index %>

为了遵循宁静的约定,我将链接更改为:

<%= link_to "invitation", index_invitation_path %>

我得到的错误是:

undefined local variable or method `index_invitation_path'

Rake路线收益:

invitations GET    /invitations(.:format)          {:controller=>"invitations", :action=>"index"}

页面名称为index.html.erb。该模型是invitation.rb。控制器是invitation_controller.rb。路线有资源:邀请。我错过了什么?

谢谢!

4 个答案:

答案 0 :(得分:1)

您的routes.rb文件中需要一个路由,用于定义邀请控制器和索引操作的映射。

通常,这是通过资源调用

创建的
resources :invitations

这会创建几个默认路由,您可以通过运行rake路由来查看。

对于单个资源,您还可以使用匹配调用

来定义它
match "invitations/:id" => "invitations#index", :as => index_invitation

rails网站提供了很好的路由资源,可提供所有详细信息:Routing from the Outside In

更新:根据您更新的问题,您的路线包含邀请(注意尾随's')路线 - 没有索引或邀请。 index_前缀由resources调用在为以下内容创建默认路由时生成:邀请。

您似乎已为邀请定义了自定义get映射。虽然这在技术上可行,但如果您的目标是支持休息路线,请使用resources方法。并且阅读了rails中的Routing指南,它非常容易理解并且非常详细。

答案 1 :(得分:1)

假设您的路由正确:

resources :invitations

然后索引操作的正确帮助(使用url /invitations.html)是

invitations_path

您可以通过运行rake路线查看更多信息。它将显示如下文字:

             lists GET    /lists(.:format)
           {:action=>"index", :controller=>"lists"}
                   POST   /lists(.:format)
           {:action=>"create", :controller=>"lists"}
          new_list GET    /lists/new(.:format)
           {:action=>"new", :controller=>"lists"}
         edit_list GET    /lists/:id/edit(.:format)
           {:action=>"edit", :controller=>"lists"}
              list GET    /lists/:id(.:format)
           {:action=>"show", :controller=>"lists"}
                   PUT    /lists/:id(.:format)
           {:action=>"update", :controller=>"lists"}
                   DELETE /lists/:id(.:format)
           {:action=>"destroy", :controller=>"lists"}
              root        /(.:format)
           {:controller=>"lists", :action=>"index"}

以上是来自我自己的路线(对于名为List的模型)。路由助手方法在HTTP方法之前立即显示。您必须记住将_path附加到每个帮助器方法。例如,我可以使用的辅助方法是:

list_path(list)
edit_list_path(list)
new_list_path
lists_path

答案 2 :(得分:0)

在您的控制台中输入佣金路线,并查看可用路线的列表。似乎没有这样的路线 index_invitation_path ?也许它命名不同

答案 3 :(得分:0)

我认为您需要“invitations_controller.rb”来包含InvitationsController。复数。