Ruby on rails form_标记的路径不正确

Ruby on rails form_标记的路径不正确,ruby-on-rails,Ruby On Rails,我正在开发一个小的Rails 4.2应用程序来修改2个Rails引擎中的一些db表中的记录。为此目的创建了rails应用程序。只有一个控制器用户菜单,没有型号 class UserMenusController < ApplicationController def home end def doper #update db records end 在routes.rb中,有以下定义: get '/handler', :to => "user_m

我正在开发一个小的Rails 4.2应用程序来修改2个Rails引擎中的一些db表中的记录。为此目的创建了rails应用程序。只有一个控制器
用户菜单
,没有型号

class UserMenusController < ApplicationController

  def home

  end

  def doper
    #update db records

  end
routes.rb
中,有以下定义:

  get '/handler', :to => "user_menus#doper"

  root :to => "user_menus#home"
问题是我很难为
表单标签
找到正确的路径。错误是:

No route matches {:action=>"doper", :controller=>"user_menus", :method=>"get"}
以下
也不起作用:

No route matches [POST] "/handler"

rake routes
中,有一个
/handler
的定义。我在这里遗漏了什么?

你有一条行动路线,不妨利用它

form_tag '/handler', method: :get do

是的,使用GET请求产生副作用是不好的。为什么不使用POST呢?

你有一个行动路线,不妨使用它

form_tag '/handler', method: :get do
是的,使用GET请求产生副作用是不好的。为什么不使用POST呢?

当您使用
时,默认情况下动词是
POST
。 尝试添加

post '/handler' => "user_menus#doper"
到您的路线。

当您执行
时,默认情况下动词为
post
。 尝试添加

post '/handler' => "user_menus#doper"

到您的路线。

这里,您的表单标记传递方法获取。您可以通过inspect元素检查表单方法

默认情况下,表单标记采用表单方法。您可以重写它,在这里您需要更改语法

<%= form_tag({:controller => "user_menus", :action => "doper"}, {:method => "get"}) %>
or

<%= form_tag({:controller => "user_menus", :action => "doper"}, :method => "get") %>
“用户菜单”,:操作=>“复制程序”},{:方法=>“获取”}%>
或
“用户菜单”,:操作=>“复制程序”},:方法=>“获取”)%>

这里是表单标记传递方法get。您可以通过inspect元素检查表单方法

默认情况下,表单标记采用表单方法。您可以重写它,在这里您需要更改语法

<%= form_tag({:controller => "user_menus", :action => "doper"}, {:method => "get"}) %>
or

<%= form_tag({:controller => "user_menus", :action => "doper"}, :method => "get") %>
“用户菜单”,:操作=>“复制程序”},{:方法=>“获取”}%>
或
“用户菜单”,:操作=>“复制程序”},:方法=>“获取”)%>
将名称“作为处理程序路径”添加到路线中

获取'/handler',至:“用户菜单”\doper,as::handler\u路径

您的表单标签:

表单标记处理程序路径,{method:“get”}do

将名称“as handler\u path”添加到路由中

获取'/handler',至:“用户菜单”\doper,as::handler\u路径

您的表单标签:


form_tag handler_path,{method:“get”}do

这一个请求
doper
的视图模板。更改为
method::post
,错误相同(缺少
doper
的模板)。嗯,您的路线必须与表单中使用的路线一致。确保他们这样做。而且,
doper
操作必须呈现某些内容。也可以解决这个问题。在routes.rb中声明路由的正确方法是什么?routes.rb用于更新记录集合(没有数据模型)?我尝试了
post/handler,目的是:'user_menu#doper
补丁。在
doper
的末尾,它将重定向。所有数据库更新都应该在
doper`内部执行。鉴于您没有合适的资源,我们这里不讨论RESTful方法。所以可以是
POST/handler
。当然不是
GET
是的,它没有数据模型。我刚刚生成了一个空白的doper.html.erb,它似乎解决了这个问题。在
routes.rb中使用
patch/handler…
method::patch
作为
表单标签
。谢谢。这一个要求提供
doper
的视图模板。更改为
method::post
,错误相同(缺少
doper
的模板)。嗯,您的路线必须与表单中使用的路线一致。确保他们这样做。而且,
doper
操作必须呈现某些内容。也可以解决这个问题。在routes.rb中声明路由的正确方法是什么?routes.rb用于更新记录集合(没有数据模型)?我尝试了
post/handler,目的是:'user_menu#doper
补丁。在
doper
的末尾,它将重定向。所有数据库更新都应该在
doper`内部执行。鉴于您没有合适的资源,我们这里不讨论RESTful方法。所以可以是
POST/handler
。当然不是
GET
是的,它没有数据模型。我刚刚生成了一个空白的doper.html.erb,它似乎解决了这个问题。在
routes.rb中使用
patch/handler…
method::patch
作为
表单标签
。谢谢