在Rails中重定向到相同的控制器方法

时间:2012-03-10 06:07:02

标签: ruby-on-rails controller params

假设有一个标准的books_controller,我需要修改索引方法。如果params [:value]为nil,我需要为其分配not_nil值,然后重新加载同一页面。我在索引方法中做的是

redirect = params[:value].nil?
params[:value] ||= some_value_which_is_not_nil
redirect_to books_path if redirect

问题是重定向后,params [:value]再次为零!如何将params变量传递给redirect_to方法,还是有其他方法来存储该值?

4 个答案:

答案 0 :(得分:0)

params哈希不起作用。 HTTP是无状态的 - 分配不会在请求中持续存在。

这意味着,每次发出请求时,都会从请求中的GET / POST参数填充params哈希值。如果要重定向到同一页面并保持该参数,则必须将其作为GET参数传递。

redirect_to books_path(:value => some_value_which_is_not_nil) if redirect

答案 1 :(得分:0)

我不确定这是否是您要查找的内容,但您可以将参数传递给path方法。

books_path(:value => 1)会产生/books?value=1

答案 2 :(得分:0)

def index
 ## RELOAD same page if params value is nil
 params[:value] || redirect_to books_path(:value => "some_value_which_is_not_nil")
 # Do my own processing!
end

答案 3 :(得分:0)

如果你将nil值设置为某个值,它应该在你要重新加载的同一个动作中......为什么不继续使用你设置的值进行处理而不重新加载?

我看不出你需要重新加载动作。