在active_admin partials中创建了一个表单输入:
<%= semantic_nested_form_for @item, :url => admin_items_path(@item) do |f| %>
<fieldset class="inputs">
<ol>
<%= f.input :category %></br>
<%= f.input :title %>
<%= f.input :photo1 %>
<%= f.input :photo2 %>
</ol>
</fieldset>
<%= f.fields_for :ItemColors do |i| %>
<fieldset class="inputs">
<ol>
<%= i.input :DetailColor %>
<%= i.input :size, :input_html => { :size => "10" } %>
<%= i.link_to_remove "remove" %>
</ol>
</fieldset>
<% end %>
<%= f.link_to_add "add", :ItemColors %>
<%= f.actions %>
<% end %>
创建一个新项目可以创建并抛出新项目,但是如果我确实更新现有项目被路由到这样的路径存在时发生错误:
No route matches [PUT] "/admin/items.150" #150 is item_id
rake routes:
batch_action_admin_items POST /admin/items/batch_action(.:format) admin/items#batch_action
admin_items GET /admin/items(.:format) admin/items#index
POST /admin/items(.:format) admin/items#create
new_admin_item GET /admin/items/new(.:format) admin/items#new
edit_admin_item GET /admin/items/:id/edit(.:format) admin/items#edit
admin_item GET /admin/items/:id(.:format) admin/items#show
PUT /admin/items/:id(.:format) admin/items#update
DELETE /admin/items/:id(.:format) admin/items#destroy
帮助解决这个问题
UPD
我发现了错误,但尚未了解如何修复
升级是一个请求:
PUT "/admin/items.150"
但应该:
PUT "/admin/items/150"
我无法理解地址出现在哪里“。”
答案 0 :(得分:1)
您的表单正在使用:method => POST
提交数据,而您的路线预计PUT
,POST
仅匹配
POST /admin/items(.:format) admin/items#create
因此它认为您的ID是.:format
参数。因此失败了。您需要将表单更改为PUT
而不是POST
。
答案 1 :(得分:0)
你应该能够做到这一点:
<%= semantic_nested_form_for [:admin, @item] do |f| %>
正如@cdesrosiers指出的那样,您随后获得的No route matches [GET] "/items/152"
错误可能是因为您实际上在控制器@item
和create
操作中重定向到update
需要这样做:
redirect_to admin_item_path(@item)