Started GET "/microposts/29" for 127.0.0.1 at 2018-04-27 22:08:41 +0800
Processing by MicropostsController#show as HTML
一次......
Started GET "/microposts/29" for 127.0.0.1 at 2018-04-27 22:08:41 +0800
Processing by MicropostsController#show as */*
第二次。
我用rails g scaffold创建了微博模型,服务器处于默认设置,索引,创建和编辑操作都被处理了一次。
我不知道为什么show action被服务器处理了两次?谁能帮我这个? (ruby 2.3.3,rails 5.0.1)
答案 0 :(得分:1)
某些浏览器(Safari
)发送的Accept */*
未映射到html格式,并且由于某种原因(字母顺序?)映射到js格式。然后protect_from_forgery启动,因为这个请求没有X-Requested-With(为什么它应该是普通的获取)浏览器返回422响应。
从技术上讲,这不是Rails的问题,而是浏览器的问题,
您可以通过修改respond_to do |format|... end
块(我认为在创建和更新操作中将其重定向到显示操作)来解决此问题。format.js
或format.json
<的注释行/ p>
或者,在控制器中:
before_action do
if request.format == Mime::ALL
request.format = request.xhr? ? :js : :html
end
end