Rails未初始化的常量错误与布尔变量

时间:2016-06-22 16:29:09

标签: ruby-on-rails ruby

当我点击此链接时:

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

2 个答案:

答案 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_urlinvitation_sumbit_admin_invitation_url。从我的头脑中,我不确定Rails如何处理命名。在控制台中使用rake routes获取应用中所有可用路由名称的列表。

我在这个背景下建议阅读:The Rails Guide: Routing