导轨|会话&搜索参数

时间:2017-06-05 12:31:30

标签: ruby-on-rails session search

当用户点击链接时,我必须获得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操作。所以它变成了零。我该如何存储它。

1 个答案:

答案 0 :(得分:2)

您不应该将new控制器操作用于其他操作。 1个动作== 1个请求。您似乎尝试加载new表单并在同一操作中执行搜索。

一种方法是使search操作不设置session[:business_model]变量。此操作可以从会话中读取,以便在需要时使搜索结果相关,然后呈现new表单。

或者,这可能是会话不是正确的方法,你应该真正将business_model保存在隐藏的表单字段中,以便每次都重新提交。