Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用以前存在的模型设计_Ruby On Rails_Ruby On Rails 4_Authentication_Devise_Rails Routing - Fatal编程技术网

Ruby on rails 使用以前存在的模型设计

Ruby on rails 使用以前存在的模型设计,ruby-on-rails,ruby-on-rails-4,authentication,devise,rails-routing,Ruby On Rails,Ruby On Rails 4,Authentication,Devise,Rails Routing,我在一个RoR 4.2.6 web应用程序中工作,当我决定使用Desive gem进行身份验证时,我已经与一位模特取得了联系 我安装了Desive'by the book',它运行良好,但是。。。我的其他与模特接触有关的路线都很疯狂。让我解释清楚 我的应用程序要求公司能够注册新联系人,只提供名字、姓氏、电子邮件和电话。这些联系人稍后将登录并为将来的访问创建密码。此外,联系人可以通过通常的方式注册自己,当没有登录联系人时,在显示的登录表单上单击Desive“create user”(创建用户)。正

我在一个RoR 4.2.6 web应用程序中工作,当我决定使用Desive gem进行身份验证时,我已经与一位模特取得了联系

我安装了Desive'by the book',它运行良好,但是。。。我的其他与模特接触有关的路线都很疯狂。让我解释清楚

我的应用程序要求公司能够注册新联系人,只提供名字、姓氏、电子邮件和电话。这些联系人稍后将登录并为将来的访问创建密码。此外,联系人可以通过通常的方式注册自己,当没有登录联系人时,在显示的登录表单上单击Desive“create user”(创建用户)。正如我之前所说,这很好用

但是当我点击链接“newcontact”(指向contact/New)时,我得到了以下错误

ActiveRecord::RecordNotFound at /contacts/sign_out
Couldn't find Contact with 'id'=sign_out"
跟踪(通过better_errors gem)显示,这在

private

def set_contact
  @contact = Contact.find(params[:id])
end
这向我表明Deave正在调用一个方法,该方法需要通过其:id设置联系人,但由于路由是联系人/签出,它将签出作为参数传递,这导致了错误。由于我写的“首先创建的路由是优先的”规则

resources :contacts
以前

devise_for :contacts
在myconfig/routes.rb中,希望这会使到联系人/新联系人的路由优先于

destroy_contact_session DELETE /contacts/sign_out(.:format)      devise/sessions#destroy
这是使用Desive注销的路线。不起作用,因为这需要用户登录,它会将我发送回Desive gem,在那里我被重定向到联系人/注销,导致相同的错误


有人遇到过类似的问题吗?有什么建议吗?

谢谢您的编辑,@teresko!我希望在您的contact\u controller.rb中有一个before过滤器before\u action:set\u contact。当您单击新联系人时,它当前不会将您重定向到designe_sessions_controller.rb#destroy。你能告诉我们rake routes | grep contact的结果和你新联系人的链接地址(在DOM中检索)吗?是的,有一个before_action::set_contact。但也有一个条款是唯一的:告诉去:设置_接触只为某些行动。“问题在于它将要:在调用所有Desive方法时设置联系人。我一到我的办公桌就会把你要的东西张贴出来,@Naremy。”。我在家,这个项目不是我的,而是我工作的公司的。