我在RoR 4.2.6网络应用程序中工作,当我决定使用Devise gem进行身份验证时,我已经有了一个模型联系人。
我安装了这本书'它工作正常,但是......我与模特联系有关的其他路线都很疯狂。让我更好地解释一下。
我的申请要求公司能够注册只提供first_name,姓氏,电子邮件和电话的新联系人。这些联系人稍后将登录并创建密码以供将来访问。此外,联系人可以通常的方式注册他/她自己,点击Devise'创建用户'在没有登录联系时显示的登录表单。正如我之前所说,这很好。
但是当我碰到链接"新联系" (指向联系人/新应该)我收到以下错误
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
这向我表明,Devise正在调用一种方法,该方法需要通过其:id来设置联系人,但是当路径是 contacts / sigh_out 时,它正在传递 sign_out 作为参数,这导致错误。由于首先创建的路线,所以优先考虑的是'我写的规则
resources :contacts
前
devise_for :contacts
在我的 config / routes.rb 中,期望这会使到 contacts / new 的路由优先于
destroy_contact_session DELETE /contacts/sign_out(.:format) devise/sessions#destroy
这是与Devise签约的路线。没有工作,因为这需要用户进行记录,然后它将我发送回Devise gem,我再次将其重定向到 contacts / sign_out ,从而导致相同的错误。
有人遇到类似的问题吗?有什么建议吗?