嗨我想知道为什么我提交一个动作设置为尚未设置的方法的表单时没有收到错误。提交后,它只是让我在同一页面上使用不同的url参数。
以下是表格:
<form>
<%= form_tag( drop_piece_path, :method => "post" ) do %>
<% 7.times do |col| %>
<%= label_tag col %>
<%= radio_button_tag(:column, col) %>
<% end %>
<%= submit_tag("Enter move")%>
<% end %>
</form>
这是我的路线:
post 'drop_piece' => 'connect_four#drop_piece', as: :drop_piece
这是我控制器中的drop_piece方法:
def drop_piece
redirect_to fake_path #should raise an error because fake_path is not a real path
end
我很困惑,因为我的表单设置为提交到drop_piece_path不应该触发我的控制器中的drop_piece方法?哪个应该引发错误?
同样,现在提交表单后,应用程序只停留在与我选择的任何单选按钮对应的params的同一页面上。
为什么不在我的connect_four控制器中触发我的drop_piece方法?谢谢你的帮助。
答案 0 :(得分:0)
这是因为您有嵌套的表单标记。一个是<form>
标记,另一个是<%= form_tag... %>
。 HTML规范不允许嵌套表单,因此提交外部表单。由于它没有action
属性,因此会将其提交到当前网址。