Rails form_for 方法不响应 html 选项

Rails form_for method not responding to html options

我有一个活动模型模型,我想 form_for 与它一起使用。

form_for(@item, url: (params[:action] == 'edit' ? api_item_path(datasheet_id: params[:datasheet_id], item_id: params[:item_id]) : api_items_path), html: {method: (params[:action] == 'edit' ? 'patch' : 'post')}) do |f|

我选择 url 是因为命名路径前面有 'api_'。 (可能有一个很好的解决方法,但我希望这不是我的问题的一部分)。

问题是带有方法键的 html 选项不影响表单的方法(始终是 'post')。

型号respond_to? :persisted?, 所以 ActionView 正确地命名了表单 (id="edit_item_xxx", class="edit_item"), 但尽管如此方法仍然是 post.

我希望我遗漏了一些明显的东西。

以下是我用于获取信息的来源: https://github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/form_helper.rb http://guides.rubyonrails.org/form_helpers.html

The method parameter 应该在 html 选项散列之外:

form_for(@item, url: (...), method: (...), html: {}) do |f|

我鼓励您编写帮助程序或自定义表单生成器对象。这里的视图发生了很多事情,很容易出错,很难测试。