Ruby on rails rails链接到方法=带有参数的post

Ruby on rails rails链接到方法=带有参数的post,ruby-on-rails,post,activerecord,Ruby On Rails,Post,Activerecord,我有一个表格,显示了一个动物列表,让我选择多个动物,并用它们做一些事情。在同一个表单中,我需要为列表中的每只动物提供一个链接,该链接将发布到另一个控制器,并使用该动物的id进行操作。因此,我需要在我的另一个表单(没有表单嵌套)中有一个链接,该链接将发布到另一个URL。这是我需要发布到的路线: animal_medicalrecords POST /medicalrecords/animal(.:format) medicalrecords#animal 这是“动物控制器”中的表单以及

我有一个表格,显示了一个动物列表,让我选择多个动物,并用它们做一些事情。在同一个表单中,我需要为列表中的每只动物提供一个链接,该链接将发布到另一个控制器,并使用该动物的id进行操作。因此,我需要在我的另一个表单(没有表单嵌套)中有一个链接,该链接将发布到另一个URL。这是我需要发布到的路线:

animal_medicalrecords POST   /medicalrecords/animal(.:format)    medicalrecords#animal
这是“动物控制器”中的表单以及我现在拥有的链接,但该链接不起作用:

<%= form_tag(action: "takeaction") do %>
...some irrelevant form stuff ...
<% @animals.each do |animal|  %>
    <%= link_to "Add", animal_medicalrecords_path(:animal_id => animal.id), :method=> :post %>

…一些不相关的东西。。。
animal.id),:method=>:post%>
当我点击链接时,它会把我带到这里../medicalrecords/animal?id=1,并有以下参数:{“id”=>“animal”} 所以,我得到了一个错误,上面写着:找不到id=animal的Medicalrecord

我做错了什么,它将“动物”作为id而不是实际id(在本例中为1)

更新: 显然,无论我如何更改链接,它总是试图转到控制器中的“显示”进行医学记录,而不是动物方法

更新: 如果我在我的表单中嵌套一个表单,它就可以正常工作。。。但不是列出的第一条记录:

<%= form_tag("/medicalrecords/animal") do %>
<%= hidden_field_tag(:animal_id,  animal.id) %>
<%= submit_tag("Add") %>
<% end %>

但是,我不能允许表单中包含表单。所以,我必须将此转换为一个链接,并使用post方法

我包含的示例链接用正确的值发布了正确的参数,但它将其发布到medicalrecords#show而不是medicalrecords#animal


有人知道我需要做什么来解决这个问题吗?

你可以在你的routes.rb中添加类似的内容

resources :medicalrecords do
  post 'animal', on: :collection
end
另一种方法是,如果您希望在控制器中有更多方法,请执行以下操作:

resources :medicalrecords do
  collection do
    post 'animal'
  end
  member do
    get 'method' # will create route: GET '/medicalrecords/:id/method'
  end
end

这将/medicalrecords/animal路由到medicalrecords控制器中的方法动物

我认为
/medicalrecords/animal
medicalrecords控制器#show
,而不是
medicalrecords控制器#animal
。路由按其定义的顺序进行解析。您能提供请求的http方法吗?另外,你能检查一下以前定义过的类似路由吗?@vss123你是对的。这将是“表演vs动物”。使用:method=>post,我希望链接会使用post方法。