我正在尝试创建一个重定向到表单控制器上称为accept_item的方法的表单。我的问题是,提交表单时,它没有通过accept_item方法。
form_controller.rb
def accept
@form = Form.find(params['id'])
end
def accept_item
redirect_to inventories_path
end
accept.html.erb
<%= form_tag accept_item_forms_url do %>
<% @form.items.each do |i| %>
<%= label_tag 'Item Name' %>
<p><%= i.name %></p>
<%= label_tag 'Quantity' %>
<p><%= text_field_tag 'quantity', i.quantity %></p>
<% end %>
<%= submit_tag 'Accept', class: 'btn btn-default btn-about pull-left', data: {confirm: 'Are you sure you want to accept?'} %>
<% end %>
routes.rb
resources :forms do
collection do
get :accept_item, :as => :accept_item
end
end
错误信息
No route matches [POST] "/forms/accept_item"
默认情况下,form_tag
帮助程序使用HTTPPOST
方法。您使用以下命令定义了路线get
:
get :accept_item, :as => :accept_item
您应该post
改用:
post :accept_item, :as => :accept_item
另外as: :accept_item
,除非您打算使用accept_item_url
而不是,否则我认为您不需要该零件accept_item_forms_url
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句