【问题标题】:ActionController::UrlGenerationError in Devise::Sessions#new - No route matchesDevise::Sessions#new 中的 ActionController::UrlGenerationError - 没有路由匹配
【发布时间】:2018-05-12 22:28:54
【问题描述】:

我正在尝试找出以下问题。有人可以在开始学习 Rails 时帮助我吗?

环境

ruby 2.3.3p222(2016-11-21 修订版 56859)[i386-mingw32]

Rails 5.1.4

设计(4.3.0)

当前行为

点击“注册”链接后,浏览器窗口会显示以下结果。

Devise::Sessions#new 中的 ActionController::UrlGenerationError

没有路线匹配 {:action=>"new", :controller=>"devise/flight_records"}

application.html.erb

中的以下代码
<%= link_to 'Add New', {:controller => 'flight_records', :action => 'new'} %>
<%= link_to 'Logbook', {:controller => 'flight_records', :action => 'index'} %>
<%= link_to 'Sign Up', new_user_registration_path %>
<%if user_signed_in? %>
  <%= link_to "Sign Out", destroy_user_session_path, method: :delete  %>
<%else %>
  <%= link_to "Log In", new_user_session_path %>
<% end %> 

routes.rb

中的以下代码
Rails.application.routes.draw do
   devise_for :users
   resources :flight_records 

   #get 'welcome/index'

   root 'flight_records#index'

在 rake 中遵循以下路线:

搜索路线

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    您正在尝试创建一个新用户。所以,它应该去 devise#registration 与 POST 动作。 默认设计注册创建用户记录,如果要创建flight_records,修改表单指向flight_records创建方法。

    【讨论】:

    • 此时实际上我正在尝试使用 get 操作访问注册视图。
    • 现在我启动并运行了它。我不知何故弄乱了application.html.erb中控制器的用法,因为我不知道如何使用它们。现在代码看起来像这样并且它可以工作: | | |
    【解决方案2】:

    现在可以了! application.html.erb 的工作版本

    | | |
          <%= link_to "Sign Out", destroy_user_session_path, method: :delete  %>
      <%else %>
          <%= link_to "Log In", new_user_session_path %>
      <% end %>
    

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 2016-04-29
      • 1970-01-01
      相关资源
      最近更新 更多