【发布时间】:2017-02-10 08:43:46
【问题描述】:
根据用户选择的submit 按钮(在本例中为Cat 和Dog),我想使用正确的http 动词将表单提交给正确的控制器操作。
在这种情况下,只有一个文本输入。如果用户按Cat 我想POST 到Cats#create,如果Dog 到PUT 到Dogs#update。
我将如何构建表单?
编辑
使用formaction 属性我可以将PUT 转换为Dogs#update
<%= form_for(cat) do |f| %>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class="actions">
<%= f.submit "Cat" %>
<%= f.submit "Dog", formaction: dog_path(Dog.first) %>
<%#= f.submit "Cat", name: 'route_to[cat]' %>
<%#= f.submit "Dog", name: 'route_to[dog]' %>
</div>
<% end %>
问题是我想POST 到Dogs#create,这可以用formaction 吗?
编辑
有一个railscast 关于根据按下的按钮的名称构建控制器的逻辑。但我想将关于哪个 HTTP 动词、控制器和操作的逻辑放在提交按钮本身中。这可能吗?
【问题讨论】:
-
你为什么不尝试使用 AJAX 而不是传统的 HTML 表单发出不同的请求。
标签: ruby-on-rails forms http strong-parameters