下面的链接在我的应用程序中工作:
<%= link_to "invitation", :controller => :invitations, :action => :index %>
为了遵循restful约定,我将链接更改为:
<%= link_to "invitation", index_invitation_path %>
我得到的错误是:
undefined local variable or method `index_invitation_path'
Rake路由yield:
invitations GET /invitations(.:format) {:controller=>"invitations", :action=>"index"}
页面名称为index.html.erb。模型是invite .rb。控制器是invitation_controller.rb。路由有资源:邀请。我错过了什么?
谢谢!
假设路由正确:
resources :invitations
那么索引操作的正确帮助器(url/invitation .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方法之前。您必须记住将路径附加到每个助手方法。例如,我可以使用的辅助方法是:
list_path(list)
edit_list_path(list)
new_list_path
lists_path
你需要在路由中添加一条路由。定义到邀请控制器和索引操作的映射的Rb文件。
通常是通过资源调用
创建的resources :invitations
它创建了几个默认路由,你可以通过运行rake路由看到。
对于单个资源,您也可以使用match调用
来定义它match "invitations/:id" => "invitations#index", :as => index_invitation
rails站点有一个很棒的路由资源,提供了所有细节:
Update:根据你更新的问题,你的路由包括一个邀请(注意后面的's')路由-没有索引或邀请。index_前缀由resources
调用在为:邀请创建默认路由时生成。
看起来你已经为邀请定义了一个自定义的get
映射。虽然这在技术上可行,但如果您的目标是支持rest路由,请使用resources
方法。阅读一下rails的Routing guide,它非常容易遵循并且非常详细。
在控制台中键入rake routes,并查看可用路由列表。似乎没有这样的路由index_invitation_path?可能命名不一样
我认为你需要"invitations_controller "。来包含InvitationsController。复数。