2017-06-05 78 views
0

當用戶點擊鏈接時,我必須獲得一個business_model數據作爲會話;Rails | Session&Search Params

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 

但是,當我們點擊搜索按鈕。請求去new行動再次沒有business_model params。所以它變成零。我如何存儲它。

回答

2

您不應該使用new控制器操作來執行其他操作。 1動作== 1請求。看起來你正在嘗試加載new表單,並在同一個動作中執行搜索。

一種方法是使search操作不會設置session[:business_model]變量。此操作可以從會話中讀取,以使搜索結果與您需要的相關,然後呈現new表單。

或者,這可能是會話不是正確的方法在這裏,你應該堅持business_model在隱藏的表單字段,以便它每次重新提交。