当我点击此链接时:
link_to("Accept", invitation_sumbit_invitation_url(invitations), method: :put)
我收到此错误:
未初始化的常量
InvitationsController
InvitationsController中的方法如下所示:
def sumbit_invitation
@invi = @invitations.find(params[:id])
@invi.update_attributes(accepted: true)
end
和路线是:
resources :invitations do
put :sumbit_invitation
end
答案 0 :(得分:0)
我建议您按照以下步骤解决问题:
1 /运行命令rake routes
以确保您的路线正确无误?
在我看来,它应该是:
resources :invitations do
member do
put :sumbit_invitation
end
end
2 /确保您的网址正确
link_to("Accept", invitation_sumbit_invitation_url(invitations), method: :put)
应改为
link_to("Accept", invitations_sumbit_invitation_path(invitations), method: :put)
使用rake routes
获取正确的路径
4 /确保您的控制器InvitationsController
正常工作
P / S:最好分享您的routes.rb文件或日志rake routes
答案 1 :(得分:0)
您的控制器位于模块ControlPanel
中,位于应用的control_panel
文件夹的controller's
子文件夹中,但您的路由没有定义相应的controll_panel
命名空间
为您的路线添加controll_panel
命名空间:
namespace :controll_panel do
resources :invitations do
put :sumbit_invitation
end
end
这会使invitation_sumbit_invitation_url
无效,您必须将其更改为admin_invitation_sumbit_invitation_url
或invitation_sumbit_admin_invitation_url
。从我的头脑中,我不确定Rails如何处理命名。在控制台中使用rake routes
获取应用中所有可用路由名称的列表。
我在这个背景下建议阅读:The Rails Guide: Routing