我收到这个错误,这让我感到困惑。我不知道发生了什么......我已按照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行):
4. <% form_for @user_session do |f| %>
5. <%= f.error_messages %>
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 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 %>
ActionController::Routing::Routes.draw do |map|
map.login "login", :controller => "user_sessions", :action => "new"
我在错误的地方看看吗?
答案 0 :(得分:6)
问题是您的路线文件。你不是在休息。因此<%form_for @user_session%>
将不知道如何创建网址。
将map.resource: user_session
添加到routes.rb可以解决您的问题。
答案 1 :(得分:1)
这看起来像是一个形式上的错误。 我在路由map.resource:user_session。
中遇到了同样的错误Formtastic应该发布到单数路由名称,而不是复数,因为user_session是一个单一的资源。