我有一个活动模型模型,我想使用它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?:p,因此ActionView正确地命名了表单(id="edit_item_xxx",class="edit_item"),但尽管如此,该方法仍然是post。
我希望我缺少一些明显的东西。
以下是我用于信息的来源:https://github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/form_helper.rbhttp://guides.rubyonrails.org/form_helpers.html
method
参数应该在html
选项哈希之外:
form_for(@item, url: (...), method: (...), html: {}) do |f|
我鼓励您编写帮助程序或自定义表单构建器对象。这里的视图有很多事情要做,很容易犯错误,很难测试。