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”
我是指在你看来。为了清楚起见,我更新了我的答案。很抱歉给你带来了困惑。