Rails form_for方法没有响应html选项

jph*_*er2 0 ruby ruby-on-rails actionview actionviewhelper activemodel

我有一个活跃的模型模型,我想使用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|
Run Code Online (Sandbox Code Playgroud)

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

问题是带有方法键的html选项不会影响表单的方法(总是'post').

模型respond_to?:persisted?,因此ActionView正确命名表单(id ="edit_item_xxx",class ="edit_item"),但尽管该方法仍然存在.

我希望有一些明显的东西让我失踪.

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

Moh*_*mad 5

method参数应该是外面的html选项哈希:

form_for(@item, url: (...), method: (...), html: {}) do |f|
Run Code Online (Sandbox Code Playgroud)

我鼓励您编写一个帮助器或自定义表单构建器对象.这里的观点有很多,很容易出错,难以测试.