2017-06-05 3 views
0

Ich muss eine Daten als Sitzung erhalten, wenn der Benutzer klickt, um wie z.Schienen | Session & Search Params

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

Ich habe auch eine Suchschaltfläche, wo wir nach einem Benutzernamen suchen können. Nach der Suche wird die URL;

http://localhost:3000/tr/booking_requests/new?utf8=%E2%9C%93&search=Bill 

So verschwindet business_model. Normalerweise nehme ich diese params und weisen Sie zu einer Sitzung

session[:business_model] = params[:business_model] 

Aber sobald Sie klicken, um eine neue Aktion startet in und Sitzung wird null zu suchen.

Wie kann ich das erreichen?

EDIT:

Wenn Benutzer zu verknüpfen klickt auf new Aktion geht und Session gespeichert wird.

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 

Aber wenn wir klicken, um den Knopf zu suchen. Die Anfrage geht wieder auf new Aktion ohne business_model params. So wird es Null. Wie kann ich es speichern?

Antwort

2

Sie sollten die Controller-Aktion new nicht für etwas anderes verwenden. 1 Aktion == 1 Anfrage. Es scheint, dass Sie versuchen, sowohl das new Formular zu laden, als auch eine Suche in derselben Aktion durchzuführen.

Ein Ansatz wäre, eine search Aktion zu haben, die die Variable session[:business_model] nicht setzt. Diese Aktion kann aus der Sitzung lesen, um die Suchergebnisse relevant zu machen, wenn Sie sie benötigen, und dann das Formular new rendern.

Alternativ kann es sein, dass die Sitzung hier nicht der richtige Ansatz ist, und Sie sollten wirklich die business_model in einem ausgeblendeten Formularfeld beibehalten, so dass es jedes Mal erneut vorgelegt wird.

Verwandte Themen