以下链接适用于我的应用:
<%= 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。路线有资源:邀请。我错过了什么?
谢谢!
答案 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。复数。