Ruby on rails GET和POST的路由名称无效

Ruby on rails GET和POST的路由名称无效,ruby-on-rails,Ruby On Rails,我正在学习为Rails 3编写的一个较旧的教程。我使用的是Rails 4.1.4 其中一个说明是更改routes文件以包括以下内容: get '/boards/:board_id/conversations/:id/reply' => "conversations#reply", :as => :reply_board_conversation post '/boards/:board_id/conversations/:id/reply' => "conversations#

我正在学习为Rails 3编写的一个较旧的教程。我使用的是Rails 4.1.4

其中一个说明是更改routes文件以包括以下内容:

get '/boards/:board_id/conversations/:id/reply' => "conversations#reply", :as => :reply_board_conversation
post '/boards/:board_id/conversations/:id/reply' => "conversations#save_reply", :as => :reply_board_conversation
显然,这给了我一个错误:

Invalid route name, already in use: 'reply_board_conversation'
在我看来,这条路线似乎在某种程度上试图复制一个新动作的行为,并创造动作。获取用于新建,发布用于使用单个路由创建。
问题是,我不知道如何重写路由才能正常工作。我在谷歌上搜索过解决方案,但似乎什么也找不到。如果有人能为我指出正确的方向,我将不胜感激。

看起来唯一的问题是重复的“命名路线”名称
回复板\u对话。所以你可以简单地改变一个。我可能会将保存版本重命名为
save\u reply\u board\u conversation
。那么它应该会起作用。记住以后要以这种方式参考路线。这将主要用于表单标记中。因此,对于exmaple:

<= form_tag :url => save_reply_board_conversation_path do %>
save\u reply\u board\u conversation\u path do%>

注意使用
save\u reply\u board\u conversation\u path
而不是
reply\u board\u conversation\u path
,因为表单将提交POST请求而不是GET请求。

这些路由的名称应该不同,尽管URL的组成是相同的,所以您实际上只需要一个名称第一个

命名路由的诀窍在于它们只生成URL,而不设置HTTP请求方法。这必须独立完成

这意味着您可以通过两种不同的方式调用同一命名路由:

<%= link_to('View', board_path(@board)) %>
<%= link_to('Delete', board_path(@board), method: :delete) %>

它们实际上呈现为相同的URL,但其中一个将点击
GET
路径,另一个点击
DELETE
one