Ruby on rails 没有与[POST]匹配的路由-添加路由不起作用

Ruby on rails 没有与[POST]匹配的路由-添加路由不起作用,ruby-on-rails,routes,Ruby On Rails,Routes,我的方法行不通 我有一个游戏库,在那里我可以添加、显示、编辑和销毁。我想扩展它并向它添加另一个方法clone 使用rails g scaffold创建的库: games_controller.rb中的克隆方法 索引中克隆的调用代码 你做错了。您的method::clone无效。的方法选项的有效值为post、patch、put和delete 方法:HTTP谓词的符号-此修饰符将动态创建 HTML表单,并立即使用 指定了HTTP谓词。用于让链接执行POST操作 在删除记录等危险操作中(搜索机器人可以

我的方法行不通

我有一个游戏库,在那里我可以添加、显示、编辑和销毁。我想扩展它并向它添加另一个方法
clone

使用rails g scaffold创建的库:

games_controller.rb中的克隆方法 索引中克隆的调用代码
你做错了。您的
method::clone
无效。的
方法
选项的有效值为post、patch、put和delete

方法:HTTP谓词的符号-此修饰符将动态创建 HTML表单,并立即使用 指定了HTTP谓词。用于让链接执行POST操作 在删除记录等危险操作中(搜索机器人可以 在对站点进行爬网时进行跟踪)支持的动词有:post、:delete、, :patch和:put。请注意,如果用户禁用了JavaScript,则 请求将退回到使用GET。如果使用href:'#',则用户 禁用JavaScript后,单击链接将无效。如果你 如果依赖于POST行为,则应在 控制器使用请求对象的post方法执行的操作?, 删除、修补或放置

现在来看看您的路线,当您执行
rake routes
时,您将看到以下内容

game_clone     POST   /games/:game_id/clone(.:format)     games#clone
clone_game POST   /games/:id/clone(.:format)    games#clone
因此,指向的链接应该如下所示

<%= link_to 'Clone', game_clone_path(game), method: :post, data: { confirm: '.. sure?' } %>
上面的内容将创建一个路径辅助对象,并包含以下内容

game_clone     POST   /games/:game_id/clone(.:format)     games#clone
clone_game POST   /games/:id/clone(.:format)    games#clone
现在用新的路径帮助器将
链接更改为
,您就可以开始了

<%= link_to 'Clone', clone_game_path(game), method: :post, data: { confirm: '.. sure?' } %>

注意:

resources :games do
  resources :comments
  post 'clone', on: :member
end

在将自定义路由添加到资源丰富的路由时,应小心。这将使用不必要的键创建路径帮助程序,例如
:*\u id
:game\u id
)。这些路由应根据场景添加为收集路由或成员路由。有关更多信息,请参阅这些

@sawa。您的编辑无效并覆盖了原始内容。请看编辑history@Pavan对不起,据说卡迪巴耶夫改变了OP的密码。嗨,谢谢你,我刚试过,但没用。现在我有一个错误,比如:找不到没有ID的游戏。def set_Game@Game=Game.find(params[:ID])end@HenrikZakaryan好的,现在当您单击克隆链接时,可以看到服务器日志中的参数。复制并粘贴到您的问题中。@HenrikZakaryan我已经更新了我的答案,解释了问题发生的原因。尝试我的最终解决方案,它应该可以解决您的问题。它可以工作,但我在库中没有看到克隆对象。“我该怎么表现呢?”HenrikZakaryan这是另一个问题,你应该通过发布另一个问题来提问。现在,您当前的问题已经解决:)
<%= link_to 'Clone', clone_game_path(game), method: :post, data: { confirm: '.. sure?' } %>