我认为这有这个;我将“新”和“编辑”视图与仅使用下面的代码段相似,该代码段指示表单是补丁还是帖子。
<% @selected_holiday[:id].present? ? (current_method = :patch) : (current_method = :post) %>
<%=
form_tag( {method: current_method},
class: 'create_form',
id: "new_holiday_form",
:"data-parsley-validate" => "" ) do
%>
我的路线包含:
human_resources_settings_holidays GET /human_resources/settings/holidays(.:format) human_resources/settings/holidays#index
POST /human_resources/settings/holidays(.:format) human_resources/settings/holidays#create
new_human_resources_settings_holiday GET /human_resources/settings/holidays/new(.:format) human_resources/settings/holidays#new
edit_human_resources_settings_holiday GET /human_resources/settings/holidays/:id/edit(.:format) human_resources/settings/holidays#edit
human_resources_settings_holiday GET /human_resources/settings/holidays/:id(.:format) human_resources/settings/holidays#show
PATCH /human_resources/settings/holidays/:id(.:format) human_resources/settings/holidays#update
PUT /human_resources/settings/holidays/:id(.:format) human_resources/settings/holidays#update
然而来自
http://localhost:3000/human_resources/settings/holidays/7d525fe6-b1e7-11e5-b6e8-00ff6a8ddd39/edit
我明白了:
http://localhost:3000/human_resources/settings/holidays/7d525fe6-b1e7-11e5-b6e8-00ff6a8ddd39/edit?method=patch
因此:
The action '7d525fe6-b1e7-11e5-b6e8-00ff6a8ddd39' could not be found for HumanResources::Settings::HolidaysController
如何点击编辑路径并浏览PATCH?
答案 0 :(得分:0)
尝试
<% @selected_holiday[:id].present? ? (current_method = :patch) : (current_method = :post) %>
<%=
form_tag(human_resources_settings_holiday_path, method: current_method,
class: 'create_form',
id: "new_holiday_form",
:"data-parsley-validate" => "" ) do
%>
示例make中的第一个参数是URL参数的一部分。如果要将当前页面指定为nil
action
作为第一个参数传递
http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag
您可能也希望相应地切换表单操作路径
答案 1 :(得分:0)
这可能是重构的好时机,因此您根本不需要进行此检查。 rails form_for:resource helper允许您传入资源,在本例中为@selected_holiday,它将创建适当的方法/操作。