Ruby on rails rails链接到方法=带有参数的post
我有一个表格,显示了一个动物列表,让我选择多个动物,并用它们做一些事情。在同一个表单中,我需要为列表中的每只动物提供一个链接,该链接将发布到另一个控制器,并使用该动物的id进行操作。因此,我需要在我的另一个表单(没有表单嵌套)中有一个链接,该链接将发布到另一个URL。这是我需要发布到的路线: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 这是“动物控制器”中的表单以及
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方法。