使用无差异访问将Flash传递给redirect_to

时间:2012-06-18 19:52:36

标签: ruby-on-rails ruby-on-rails-3

我正在尝试在redirect_to内设置闪存变量,但遇到问题。

当我使用它时,哈希被传递,但没有无关紧要的访问权限。 (即:我可以使用'key'但不能使用:key

redirect_to root_url, :flash=>params.merge({:error=>'no-results'}.with_indifferent_access)

我也可能接近这个完全错误。这是一个请求不同操作的搜索表单,如果没有结果,则会重定向回搜索表单(在root_url上)。我正在传递params,所以我可以将表单字段设置回用户选择的内容。

谢谢!

编辑:我之前发布的“工作正常”的示例实际上并没有正常工作。

3 个答案:

答案 0 :(得分:0)

你想要以无关紧要的方式查看什么?你现在的方式是merge的参数是被转换的。也许你正在寻找

redirect_to root_url, :flash=>params.merge({:error=>'no-results'}).with_indifferent_access

答案 1 :(得分:0)

这是闪存的非标准用途......用于存储要向用户显示的消息。 它似乎有点迂回做你真正需要的方式 - 我假设只是一个快速的地方来存储params而你重定向是吗?

您是否考虑过直接使用会话?

例如:

session[:saved_params] = params.merge :error=>'no-results'

然后在新动作中:

real_params = session[:saved_params]

答案 2 :(得分:0)

检查路线中的root :to是否重定向到root :to => redirect('[PAGE]')等其他网页。

这发生在我身上,我不得不使用资源路径重定向