使用以前存在的模型进行设计

时间:2016-03-29 07:13:18

标签: ruby-on-rails ruby-on-rails-4 authentication devise rails-routing

我在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 ,从而导致相同的错误。

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

0 个答案:

没有答案