Rails 4 +设计+路由错误

时间:2013-09-05 23:26:35

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

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

我正在使用Rails 4,拥有3.0.3版本的Devise,捆绑它,运行“rails generate devise:install”来安装它,运行“rails generate devise user”,运行db:migrate,raked the routes,并重新启动Rails服务器。

我甚至用“正确”的路线重新创建了按钮动作并“获得了帖子” - 没有骰子。

有人有任何想法吗?我在这里不知所措。

1 个答案:

答案 0 :(得分: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 /应用/视图/布局/ application.html.erb:

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

现在你可以将link_to放在任何页面的任何地方,并且它会起作用。原因是'register_path'。

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

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

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

routes.rb中:

# Inside get method, third parameter
as: :bowtiesarecool

someview.html.erb:

# Inside link_to method, second parameter
bowtiesarecool_path

只需将变量名称与符号名称匹配,然后在其后面添加_path。 link_to方法将处理其他所有内容!