0

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

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

我什至用“正确”的路线和“get post”重新创建了按钮动作——没有骰子。

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

4

1 回答 1

0

好吧,它总是欺骗调试服务器端代码而没有看到它在运行,但这是应该工作的。

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

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

yourappname/app/views/layouts/application.html.erb:

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

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

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

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

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

路线.rb:

# Inside get method, third parameter
as: :bowtiesarecool

someview.html.erb:

# Inside link_to method, second parameter
bowtiesarecool_path

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

于 2013-09-05T23:34:23.643 回答