【问题标题】:undefined method `user_sessions_path' for #<ActionView::Base:0xdb3158>#<ActionView::Base:0xdb3158> 的未定义方法“user_sessions_path”
【发布时间】:2018-09-22 13:53:04
【问题描述】:

我遇到了这个错误,这让我陷入困境。我不知道发生了什么...我已按照 T 的指示进行操作,但它仍在抱怨 - 请帮助!我已经提取了错误消息、控制器文件、登录页面和路由文件。

错误信息

NoMethodError in User_sessions#new
Showing app/views/user_sessions/new.html.erb where line #4 raised:
undefined method `user_sessions_path' for #<ActionView::Base:0x1fe766f>

提取的源代码(第 4 行附近):

app/views/user/login.rhtml

4. <% form_for @user_session do |f| %>
5.  <%= f.error_messages %>

控制器/user_sessions_controller.rb

class UserSessionsController < ApplicationController
  before_filter :require_no_user, :only => [:new, :create]
  before_filter :require_user, :only => :destroy

  def new
    @user_session = UserSession.new
  end

  def create
    @user_session = UserSession.new(params[:user_session])
    if @user_session.save
      flash[:notice] = "Login successful!"
      redirect_to root_url
      #redirect_back_or_default account_url
    else
      render :action => :new
    end
  end

  def destroy
    current_user_session.destroy
    flash[:notice] = "Logout successful!"
    redirect_to root_url
    #redirect_back_or_default account_url
  end
end

user_sessions/new.html.erb

#User Login

<% form_for @user_session do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :Email %><br />
    <%= f.text_field :email %>
  </p>
  <p>
    <%= f.label :Password %><br />
    <%= f.password_field :password %>
  </p>
  <p>
    <%= f.submit "Submit" %>
  </p>
<% end %>

routes.rb 文件

ActionController::Routing::Routes.draw do |map|
  map.login "login", :controller => "user_sessions", :action => "new"

我是不是看错地方了??

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    问题在于您的路线文件。你没有安静地进行会议。所以&lt;%form_for @user_session%&gt; 不知道如何创建一个 url。

    map.resource: user_session 添加到 routes.rb 应该可以解决您的问题。

    你应该仔细阅读restful_authentication plugin's documentation.

    【讨论】:

      【解决方案2】:

      对我来说,这看起来像是一个格式错误。 我在路由 map.resource 中遇到了同样的错误:user_session。

      Formtastic 应该发布到单数路由名称,而不是复数,因为 user_session 是单数资源。

      【讨论】:

        猜你喜欢
        • 2012-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-14
        • 2015-06-11
        • 1970-01-01
        • 1970-01-01
        • 2013-04-10
        相关资源
        最近更新 更多