Ruby on rails 未定义的局部变量或方法-Rails路由

Ruby on rails 未定义的局部变量或方法-Rails路由,ruby-on-rails,routing,Ruby On Rails,Routing,我的应用程序中有一个似乎正确的资源,但当我打开索引时,我得到一个错误:未定义的局部变量或方法“new\u beta\u request\u path”。这也发生在测试请求批准路径中 我的链接看起来像“btn”%>和 所有的路径对我来说似乎都是正确的,但显然缺少了一些东西 在我的routes.rb中,我有: resources :beta_requests, :only => [:index, :edit, :create, :update, :destroy] match '/reque

我的应用程序中有一个似乎正确的资源,但当我打开索引时,我得到一个错误:
未定义的局部变量或方法“new\u beta\u request\u path”
。这也发生在测试请求批准路径中

我的链接看起来像
“btn”%>

所有的路径对我来说似乎都是正确的,但显然缺少了一些东西

在我的
routes.rb
中,我有:

resources :beta_requests, :only => [:index, :edit, :create, :update, :destroy]

match '/request_invite', to: 'beta_requests#new', :as => "request_invite"
match 'beta_requests/:id/approve', to: 'beta_requests#approve', :as => "beta_request_approval", :via => :put
当我运行Rake路由时,我会得到以下结果:

beta_requests         GET    /beta_requests(.:format)              beta_requests#index
                      POST   /beta_requests(.:format)              beta_requests#create
edit_beta_request     GET    /beta_requests/:id/edit(.:format)     beta_requests#edit
beta_request          PUT    /beta_requests/:id(.:format)          beta_requests#update
                      DELETE /beta_requests/:id(.:format)          beta_requests#destroy
request_invite               /request_invite(.:format)             beta_requests#new
beta_request_approval POST   /beta_requests/:id/approve(.:format)  beta_requests#approve

有人能看到我显然看不到的东西吗?

只有
数组中没有
:新的
?您可以添加它:

resources :beta_requests, :only => [:index, :edit, :new, :create, :update, :destroy]

或者完全删除散列参数,因为这样会定义所有资源操作。

您希望在链接中使用
request\u invite\u path
而不是
new\u beta\u request\u path
。即:

“btn”%>

这对您是可用的,因为您在request\u invite路由定义上设置了:as选项


至于另一个错误,,我注意到,您的rake路由使用POST动词和您的
路由列出
beta\u request\u approval
。rb
使用
:via=>:put
选项定义该路由。

我将下面的
:new
移动到
request\u invite
路径中,因为我不希望URL是
/beta\u requests/new
,我想要
/request\u invite
。为什么不在第一次
链接到
调用中使用
request\u invite\u path
而不是
新建beta\u request\u path
,这对
新建beta\u request\u path
错误有效。我仍然收到
beta\u请求\u批准\u路径的错误
。可能是我在使用自定义路由和资源路由吗?您还没有指定HTTP方法。如果是
链接到…:方法=>:将
链接到…:method=>:post
。我确实在路由文件中有它,我是否还需要将它添加到
link_to
标记中?我已经在代码中有了它。它可能有点隐秘,但它就在那里:
match'/request\u invite',to:'beta\u requests\35; new',:as=>“request\u invite”
我是指在你看来。为了清楚起见,我更新了我的答案。很抱歉给你带来了困惑。