在激活了Turbolinks的Rails项目(5.1)中提交基本的xhr表单,会触发正确的服务器端响应,但客户端(Turbolinks)会丢弃响应。无论是GET还是POST都不起作用。在Firefox和Chromium中进行了测试。带重定向的表单正常工作。
以下是一个对我失败的简单测试页面:
test.html.erb:
表单加载如预期一样,但是在提交后页面没有改变。在xhr响应内正确的答案可见,但是没有应用到DOM中。
这是一个bug吗,还是我使用turbolinks有问题?
<h1><%= @value %></h1>
<%= form_with url: 'test' do |f| %>
<%= f.check_box :anything %>
<%= f.submit %>
<% end %>
控制器:
def test
if request.post?
@value = 'post'
else
@value = 'get'
end
end
路由:
post '/test', to: 'controller#test'
get '/test', to: 'controller#test'
Rails响应负载:
<h1>post</h1>
<form action="test" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="X1sh+tc/Jx4P0rdDqc2CD1RetKQKr+lVh4fD29JOMY/b+PdPNgw1qyzoyv6t3I2I+6jV1mmn6voXN+YySaUISw==" />
<input name="anything" type="hidden" value="0" /><input type="checkbox" value="1" name="anything" />
<input type="submit" name="commit" value="submit" data-disable-with="submit" />
</form>
</div>
表单加载如预期一样,但是在提交后页面没有改变。在xhr响应内正确的答案可见,但是没有应用到DOM中。
这是一个bug吗,还是我使用turbolinks有问题?