当用户点击链接时,我必须获得business_model
个数据作为会话,例如;
http://localhost:3000/tr/booking_requests/new?business_model=Sleep
我还有一个搜索按钮,我们可以在其中搜索用户名。搜索后,网址变为;
http://localhost:3000/tr/booking_requests/new?utf8=%E2%9C%93&search=Bill
所以,business_model
消失了。通常情况下,我会使用此参数并将其分配给会话
session[:business_model] = params[:business_model]
但是一旦你点击搜索按钮,新动作即可开始,会话变为零。
我怎样才能做到这一点?
修改
当用户点击链接时,会转到new
操作并存储会话。
def new
@users = User.search(params[:search]).order('id DESC').paginate(:page => params[:page], :per_page => 15)
@booking = BookingRequest.new
session[:business_model] = params[:business_model]
end
但是当我们点击搜索按钮时。该请求会在没有new
参数的情况下再次转到business_model
操作。所以它变成了零。我该如何存储它。
答案 0 :(得分:2)
您不应该将new
控制器操作用于其他操作。 1个动作== 1个请求。您似乎尝试加载new
表单并在同一操作中执行搜索。
一种方法是使search
操作不设置session[:business_model]
变量。此操作可以从会话中读取,以便在需要时使搜索结果相关,然后呈现new
表单。
或者,这可能是会话不是正确的方法,你应该真正将business_model
保存在隐藏的表单字段中,以便每次都重新提交。