【问题标题】:Rails | Session & Search Params导轨 |会话和搜索参数
【发布时间】:2017-06-05 12:31:30
【问题描述】:

当用户点击链接时,我必须获得一个business_model 数据作为会话;

http://localhost:3000/tr/booking_requests/new?business_model=Sleep

我还有一个搜索按钮,我们可以在其中搜索用户名。搜索后 url 变为;

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

但是当我们点击搜索按钮时。该请求在没有business_model 参数的情况下再次转到new 操作。所以它变成了nil。我该如何存储它。

【问题讨论】:

    标签: ruby-on-rails session search


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多