我正在探索form_tag的所有选项,我注意到如果我使用form_tag(action:'create'),它就会发布“create”。
但是,如果使用form_tag('/create')或form_tag('create'),则在浏览器中会出现此错误\
No route matches [POST] "/create"我只是从关于form_tag的Rails文档中给出的示例推断使用'/create‘(tag)。
,有人知道我为什么会犯这个错误吗?
发布于 2014-11-22 15:29:39
form_tag需要找到发送数据的路径所需的任何东西。
action: 'create'被解析为{action: 'create'} (一个Hash ),它调用路由系统(在routes.rb中定义了规则)来为create操作在同一个控制器(当前视图在in)中找到路由。
否则,它通常与路径助手一起使用,将路径作为字符串返回。当您手动指定字符串时,它将直接用作路径。大多数情况下,这是,而不是您想要的。所有路径帮助程序都可以通过调用rake routes找到。对于一个赤裸裸的应用程序,我拼凑了一个测试,这是我得到的:
Prefix Verb URI Pattern Controller#Action
root GET / application#index这意味着您有root_path和root_url (Prefix提示)方法,它们将路径'/‘路由到ApplicationController,action index。如果我在同一条道路上接受一个帖子(上面的表格上说我没有),我会写这样的:
form_tag(root_path) # parentheses are optional, it's Ruby!PS:将任何东西路由到ApplicationController上都是错误的做法。所以,是的,这是一个不切实际的例子,尽管如此,它解释了这一切的意义。
https://stackoverflow.com/questions/27078713
复制相似问题