ruby on rails,如果在浏览器中单击后退按钮,则重定向

安迪

我有一个搜索表单,其中显示了可供预订的房间,如果我预订房间并随后在浏览器中单击“后退”按钮,则仍显示搜索结果。当我回击时是否可以重新加载页面,以便用户不得不再次单击搜索按钮才能看到可用的房间?我只想要没有结果的默认搜索表单吗?我之前尝试过:

before_filter :set_cache_buster
def set_cache_buster
    response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
 end

但这只是重新加载页面,而用户输入的参数仍在搜索中,因此它基本上显示与不重新加载相同的页面,谢谢

陈慧琳

如果您的表单方法是“ GET”,则当您单击“后退”按钮时该页面将始终可用,并且查询字符串都位于url中。在许多情况下,这种效果是首选的,例如,您可以为Google搜索网址添加书签。

您可以将表单方法更改为“ POST”,因此该页面将不再可用。

添加

请谨慎使用。按照惯例,“ GET”用于获取数据,“ POST”用于添加一些数据。搜索表单是为获取数据而构建的,因此表单方法的约定为“ GET”,这里没有错。因此,仅在确实需要时更改它。

添加更多OP表示他无法更改表单方法

好吧,这是一个技巧,如果您希望搜索结果仅在单击按钮时出现,而不是带有参数的url。

这个想法是使用Javascript在单击按钮时附加一个新的隐藏输入,然后控制器验证此新参数是否存在。如果存在,则处理并返回结果,否则显示一些错误。

# JavaScript
$('#the_form button').on('submit', function() {
  this.preventDefault();
  this.parent.append('<input type="hidden" name="human_hit" value="yes" />');
  this.parent.submit();
})

# Controller
def search
  if params[:human_hit]
    # Do search logic and deliver
  else
    redirect_to :back, alert: "You need to hit the button to search"
  end
end

这是一个hack,未经验证,这个主意应该可以解决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Java脚本,Ruby on Rails禁用浏览器后退按钮

来自分类Dev

如何使用Java脚本,Ruby on Rails禁用浏览器后退按钮

来自分类Dev

使用Ruby on Rails在浏览器中打印文本

来自分类Dev

如果在array.each中,则为Ruby

来自分类Dev

浏览器中的Ruby / Tk

来自分类Dev

Ruby在Rails上的重定向

来自分类Dev

Chrome浏览到新页面并使用Ruby on Rails作为后端单击后退按钮后显示缓存的JSON

来自分类Dev

Wicket-单击浏览器后退按钮时重定向到同一页面

来自分类Dev

Ruby on Rails应用程序中的后退按钮跳过页面

来自分类Dev

浏览器关闭时销毁会话-Ruby on Rails

来自分类Dev

浏览器关闭时销毁会话-Ruby on Rails

来自分类Dev

Ruby on Rails。首次运行应用程序。继续在浏览器中遇到相同的错误。PagesController

来自分类Dev

如果在Ruby中使用Tenerary声明

来自分类Dev

Ruby中的cookie在不同的浏览器中登录

来自分类Dev

如果在Ruby中不为nil,是否有更好的方法可以挂起?

来自分类Dev

重定向404、422、500 Ruby On rails

来自分类Dev

Ruby On Rails,重定向后参数丢失

来自分类Dev

是否可以在Ruby Shoes中打开浏览器窗口?

来自分类Dev

使用Ruby启动并终止浏览器

来自分类Dev

在Ruby on Rails中关闭按钮

来自分类Dev

AngularJS仅在浏览器的后退按钮上重定向路由

来自分类Dev

Ember JS浏览器的“后退”按钮和重定向冲突

来自分类Dev

如何在Ruby on Rails中单击以使按钮更改值

来自分类Dev

通过单击 Ruby on Rails 中的按钮生成表单

来自分类Dev

在 Ruby on Rails 中调用控制器函数时如何保留相同的浏览器视图/页面?

来自分类Dev

Ruby on Rails提交按钮

来自分类Dev

Ruby on Rails多个按钮

来自分类Dev

Ruby就像DSL中的Ruby

来自分类Dev

如何在Rails上的ruby中重定向到另一个控制器动作

Related 相关文章

  1. 1

    如何使用Java脚本,Ruby on Rails禁用浏览器后退按钮

  2. 2

    如何使用Java脚本,Ruby on Rails禁用浏览器后退按钮

  3. 3

    使用Ruby on Rails在浏览器中打印文本

  4. 4

    如果在array.each中,则为Ruby

  5. 5

    浏览器中的Ruby / Tk

  6. 6

    Ruby在Rails上的重定向

  7. 7

    Chrome浏览到新页面并使用Ruby on Rails作为后端单击后退按钮后显示缓存的JSON

  8. 8

    Wicket-单击浏览器后退按钮时重定向到同一页面

  9. 9

    Ruby on Rails应用程序中的后退按钮跳过页面

  10. 10

    浏览器关闭时销毁会话-Ruby on Rails

  11. 11

    浏览器关闭时销毁会话-Ruby on Rails

  12. 12

    Ruby on Rails。首次运行应用程序。继续在浏览器中遇到相同的错误。PagesController

  13. 13

    如果在Ruby中使用Tenerary声明

  14. 14

    Ruby中的cookie在不同的浏览器中登录

  15. 15

    如果在Ruby中不为nil,是否有更好的方法可以挂起?

  16. 16

    重定向404、422、500 Ruby On rails

  17. 17

    Ruby On Rails,重定向后参数丢失

  18. 18

    是否可以在Ruby Shoes中打开浏览器窗口?

  19. 19

    使用Ruby启动并终止浏览器

  20. 20

    在Ruby on Rails中关闭按钮

  21. 21

    AngularJS仅在浏览器的后退按钮上重定向路由

  22. 22

    Ember JS浏览器的“后退”按钮和重定向冲突

  23. 23

    如何在Ruby on Rails中单击以使按钮更改值

  24. 24

    通过单击 Ruby on Rails 中的按钮生成表单

  25. 25

    在 Ruby on Rails 中调用控制器函数时如何保留相同的浏览器视图/页面?

  26. 26

    Ruby on Rails提交按钮

  27. 27

    Ruby on Rails多个按钮

  28. 28

    Ruby就像DSL中的Ruby

  29. 29

    如何在Rails上的ruby中重定向到另一个控制器动作

热门标签

归档