【问题标题】:Rails 4 + Devise + Routing ErrorRails 4 + 设计 + 路由错误
【发布时间】:2013-09-05 23:26:34
【问题描述】:

我正在尝试在一个相当简单的事件创建/显示 Rails 4 应用程序上安装 Devise。我有 2 个静态页面和未经过身份验证显示的索引页面,一切都很好。其他任何事情都会将您带到“注册”页面。从那里,当我尝试为自己创建一个帐户时(只是查看其他页面-简单的香草设计安装尝试),单击“提交”时出现“没有路由匹配 [POST]”/registrations/user”错误(f .提交)

我使用的是 Rails 4,有 3.0.3 版本的 Devise,捆绑它,运行“rails generate devise:install”来安装它,运行“rails generate devise user”,运行 db:migrate,搜索路由,并重新启动 Rails 服务器。

我什至用“正确”路线和“获取帖子”重新创建了按钮操作 - 没有骰子。

有人知道吗?我在这里不知所措。

【问题讨论】:

    标签: ruby-on-rails devise routes ruby-on-rails-4


    【解决方案1】:

    嗯,它总是欺骗调试服务器端代码而没有看到它在起作用,但这是应该起作用的。

    yourappname/config/routes.rb :

    devise_scope :user do
        # matches the url '/register' to the registration controller's 'new' action and creates a :register symbol inorder to reference the link dynamically in the rest of the code
        get 'register', to: 'devise/registrations#new', as: :register
    end
    

    (假设您的注册按钮在您应用的部分)

    你的应用名称/app/views/layouts/application.html.erb:

    <%= link_to "Register", register_path, class: "btn" %>
    

    现在,您实际上可以将该 link_to 放在任何位置、任何页面中,并且它会起作用。原因是“register_path”。

    当您创建路由时,as: :register 参数会创建一个可以在整个应用程序中访问的全局变量。

    link_to 方法中的 register_path 变量将始终调用正确的操作,即使您更改了路由文件。

    这只是语法。你可以创建任何你想要的符号。这也可以:

    routes.rb:

    # Inside get method, third parameter
    as: :bowtiesarecool
    

    someview.html.erb:

    # Inside link_to method, second parameter
    bowtiesarecool_path
    

    只需将变量名称与符号名称匹配,并在其后放置一个 _path。 link_to 方法将处理其他所有事情!

    【讨论】:

    • 原来我的注册模型与设计的注册内容冲突。什么样的恶梦。不知道我将如何解决这个问题。
    • 这正是我不太喜欢使用宝石的原因!但是为什么不让 Devise 处理所有的注册呢?如果做不到这一点(毕竟我对您的应用程序一无所知!),为什么不真正熟悉注册过程:railscasts.com/episodes/250-authentication-from-scratch 并找出设计在幕后所做的事情。
    猜你喜欢
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    相关资源
    最近更新 更多