没有路线匹配 [POST]“/sessions/new”(rails 4 正在运行)

2024-02-12

我正在阅读《Rails 4 In action》一书,但遇到了以下错误:

No route matches [POST] "/sessions/new" 

我不知道为什么,因为我已经按照教程进行了操作。这让我相信教程本身是有缺陷的。无论如何,由于某种原因,它在应该发布到session#create 时却发布到session#new。我究竟做错了什么?

会话控制器.rb

class SessionsController < ApplicationController
  def new
  end

  def create
    user = User.where(:name => params[:signin][:name]).first
      if user && user.authenticate(params[:signin][:password])
        session[:user_id] = user.id
        flash[:notice] = "Signed in successfully."
        redirect_to root_url
      else
    flash[:error] = "Sorry."
    render :new
    end
  end
end

会话/new.html.erb

<h1>Sign in</h1>
<%= form_for :signin, method: "POST" do |f| %>
  <p>
  <%= f.label :name %><br />
  <%= f.text_field :name %>
  </p>
  <p>
  <%= f.label :password %><br />
  <%= f.password_field :password %>
  </p>
<%= f.submit "Sign in" %>
<% end %>

路线.rb

  get "/signin", to: "sessions#new"
  post "/signin", to: "sessions#create"

你是对的,这本书里有一个错误。

当您有标签表单时

<%= form_for :signin, method: "POST" do |f| %>

如果 Rails 不知道什么:signin意味着,那么它将简单地复制当前 url 并使用 post 动词(无论您是否指定!)将表单提交到该 url(在本例中为“sessions/new”)

<form accept-charset="UTF-8" action="/sessions/new" method="post">
....

显然,这不一定是您想要的,因为您没有 /sessions/new 用于 post HTTP 动词,我认为最简单的解决方案是指定一个路由

post "/signin", to: "sessions#create", as: "signin"

并在您的 form_for 中

<%= form_for signin_path do |f| %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有路线匹配 [POST]“/sessions/new”(rails 4 正在运行) 的相关文章

随机推荐

  • 网格中最大的产品

    我被这个问题困扰了 我确实认为我已经找到了正确的解决方案 但是当将其提交到网站时 它不接受 我尝试通过打印所有可能的组合来调试它 它们都完成了 水平 垂直和对角线 数组也被正确填充 我后来打印出来检查了一下 你知道问题可能出在哪里吗 Que
  • 安装aws-sdk后出错

    我正在尝试让回形针与 S3 一起使用 但我的视图抛出错误 cannot load such file aws sdk You may need to install the aws sdk gem 我的 Rails 配置如下 Gemfile
  • (MVC 3 Razor) - 循环遍历 3 列 div 的更简单方法

    目前我在 CSHTML 中使用以下代码 int i 0 foreach var item in Model Traders if i 3 0 if i 1 div class row div class four column div cl
  • 获取 Firefox SDK main.js 中某个文件的内容

    所以我正在开发一个 Firefox 插件 它可以向任何网页的 DOM 添加一些 HTML 这里的想法是我使用一个名为template html作为模板 位于dataaddon 文件夹内的文件夹 接下来 我想使用该内容template htm
  • 如何像Notes App一样设置UITextView内容插入

    我正在开发一个应用程序 我需要在 iPhone 中提供类似 Notes App 的功能 如第一个屏幕截图所示 最初 笔记在内容开始之前留下一个选项卡 我也想做同样的事情 当我设置时左侧内容插图 UITextView 到 25 时 它显示如屏
  • 是否可以使“type”的输出返回不同的类?

    所以免责声明 这个问题 https stackoverflow com questions 56879033 how do i override type method in python object noredirect 1 comme
  • Python/Tkinter:Tkinter StringVar(IntVar 等)线程安全吗?

    Tkinter StringVar IntVar FloatVar 等 线程安全吗 后台线程可以读取或写入这些对象吗 或者我必须使用队列在后台线程和主 Tkinter GUI 线程之间传递信息 并让我的主 Tkinter 线程弹出队列并相应
  • .NET 桌面应用程序的最佳崩溃报告框架? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个简单的 Windows 窗体应用程序 我想向其中添加崩溃报告 可以为我提供有关用户计算机 当然
  • Serilog不将日志输出到txt文件中

    我使用 dotnet 工作服务 net 5 我集成了 Serilog 以及浓缩器和接收器 但由于某种原因 我在文件日志中看不到任何输出 这是我的 appsettings json ConnectionStrings DefaultConne
  • 使用数组和对象将多个值插入到雪花表中

    我试图使用数组和结构插入多行 通过 SQL 语句转换为 Snowflake 要将值数组插入到列中 我正在使用ARRAY CONSTUCT函数并插入我正在使用的结构 字典 对象OBJECT CONSTRUCT功能 E g insert int
  • 新版本上传到 iTunes Connect 后消失

    我正在尝试使用 Xcode 8 将构建版本上传到 iTunesConnect Xcode 显示上传成功 在 iTunesConnect 的 活动 选项卡中 我看到我的构建出现了 并且被标记为 正在处理 但几分钟后 这个构建就消失了 我在任何
  • 对 CountedCompleter 的文档和来源感到困惑

    这是一个代码片段java util concurrent CountedCompleter类 JDK 1 8 0 25 If the pending count is nonzero decrements the count otherwi
  • 使用 JodaTime 自动将秒转换为年/日/小时/分钟?

    当 x 超过 3600 秒时 有没有办法将 x 秒转换为 y 小时和 z 秒 同样 当x超过60但小于3600秒时 使用JodaTime 将其转换为 a分b秒 我知道我必须在 periodFormatter 中指定我需要的内容 但我不想指定
  • 传递常量矩阵

    参考this https stackoverflow com questions 546860 passing arrays and matrices to functions as pointers and pointers to poi
  • 对象内部字段的 Arangodb AQL 更新

    给出以下集合文档示例 timestamp 1413543986 message message readed 8 null 9 null 22 null type 1014574149174 如何使用键 readed 更新对象中特定键的值
  • 我可以使用 groovy 的默认 getter/setter 来帮助实现 java 接口吗?

    我正在从导入的库扩展一个非常简单的 Java 接口 该接口非常简单 它声明的唯一方法是属性列表的 getter 和 setter 我的应用程序是用 Groovy 编写的 因此我想使用 Groovy 类来实现这个 Java 接口 我的印象是
  • CryptoAPI 返回 HMAC_SHA1 的错误结果

    我将下面的代码与 Crypto API 一起使用 但根据其他 API 和库的测试 我没有得到预期的结果 我正在使用钥匙 key 数据是 message 例如 使用 Indy 的 TidHMACSHA1 我得到 2088df74d5f2146
  • 使用数组绘制 D3 简单折线图

    我正在尝试实现这段代码 http bl ocks org 3883245 http bl ocks org 3883245 但我不是加载 TSV 文件 而是从数组加载数据 数组如下所示 2012 10 02 2 2012 10 09 2 2
  • 什么时候应该在非成员函数之前写入关键字“static”?

    我最近在 SO 上看到了一些关于static函数之前的关键字 我想知道如何正确使用它 1 什么时候应该写关键字static在非成员函数之前 2 在头文件中定义静态非成员函数有危险吗 为什么不 附带问题 3 是否可以以某种方式在头文件中定义一
  • 没有路线匹配 [POST]“/sessions/new”(rails 4 正在运行)

    我正在阅读 Rails 4 In action 一书 但遇到了以下错误 No route matches POST sessions new 我不知道为什么 因为我已经按照教程进行了操作 这让我相信教程本身是有缺陷的 无论如何 由于某种原因