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?' } %>