"user_session-6ren">
gpt4 book ai didi

ruby-on-rails - Rails 3 路由错误 : No route matches {:controller= >"user_sessions"}

转载 作者:行者123 更新时间:2023-12-04 02:14:54 25 4
gpt4 key购买 nike

我将尽可能高层次地概述这一点。我正在尝试访问 http://localhost:3000/login

错误是:

No route matches {:controller=>"user_sessions"}

下面的 new.html.erb 文件中的这一行出错了:

<%= form_for(@user_session) do |f| %>

routes.rb中的路由是:

match 'login' => 'user_sessions#new', :as => :login

user_sessions_controller.rb 是:

class UserSessionsController < ApplicationController
def new
@user_session = UserSession.new
end

def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Successfully logged in."
redirect_to root_path
else
render :action => 'new'
end
end

def destroy
@user_session = UserSession.find
@user_session.destroy
flash[:notice] = "Successfully logged out."
redirect_to root_path
end
end

登录页面的实际 View 如下(new.html.erb):

<h1>Login</h1>

<%= form_for(@user_session) do |f| %>
<% if @user_session.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user_session.errors.count, "error") %> prohibited this user from being saved:</h2>

<ul>
<% @user_session.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :login %><br />
<%= f.text_field :login %>
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>

谢谢。

最佳答案

单独使用 form_for(@user_session) 将尝试使用您在 routes.rb 中定义的资源构建路径。你目前没有的(我假设,因为你没有提到它。如果我错了请更正。)。

一些方法..

添加资源并限制到你需要的资源

resources :user_sessions, :only => [:create, :destroy]

这些将使用默认路由命名,但您可以根据需要自定义它。


匹配出你需要的路线。

match 'login' => 'user_sessions#create', :as => :post_login, :via => :post

查看

= form_for(@user_session), :url => post_login_path do |f|
...

关于ruby-on-rails - Rails 3 路由错误 : No route matches {:controller= >"user_sessions"},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com