Ruby on rails 使用以前存在的模型设计
我在一个RoR 4.2.6 web应用程序中工作,当我决定使用Desive gem进行身份验证时,我已经与一位模特取得了联系 我安装了Desive'by the book',它运行良好,但是。。。我的其他与模特接触有关的路线都很疯狂。让我解释清楚 我的应用程序要求公司能够注册新联系人,只提供名字、姓氏、电子邮件和电话。这些联系人稍后将登录并为将来的访问创建密码。此外,联系人可以通过通常的方式注册自己,当没有登录联系人时,在显示的登录表单上单击Desive“create user”(创建用户)。正如我之前所说,这很好用 但是当我点击链接“newcontact”(指向contact/New)时,我得到了以下错误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”(创建用户)。正
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。”。我在家,这个项目不是我的,而是我工作的公司的。