0

我有一个活动模型模型,我想将它与 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 选项不会影响表单的方法(始终是“发布”)。

模型 response_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

4

1 回答 1

4

method参数应该在html选项哈希之外:

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

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

于 2015-01-20T16:54:21.843 回答