2017-05-13 6 views
1

Ich habe keine Idee, wie einfache CRUD mit Cookies zu implementieren.So setzen Sie Cookies mit dem Formular

Erste Frage: Was anstelle von @user? Ich habe nur das: Meine Form:

<%= simple_form_for @user do |f| %> 
    <%= f.input :first_name %> 
    <%= f.input :last_name %> 
    <%= f.input :date_of_birth %> 
    <%= f.input :phone_number %> 
    <%= f.button :submit %> 
<% end %> 

Nächste Frage: wie man richtig Wert von Form [], um Cookies Feld schicken. Bevor ich nur Params-Methode (z. B. clients_params) und Instanzvariablen verwendet.

def create 
    cookies[:first_name] = params[:first_name] 
    cookies[:last_name] = params[:last_name] 
    cookies[:date_of_birth] = params[:date_of_birth] 
    cookies[:phone_number] = params[:phone_number] 

    redirect_to 'clients/show' 
    end 

    def show 
    @first_name = cookies[:first_name] 
    @last_name = cookies[:last_name] 
    @date_of_birth = cookies[:date_of_birth] 
    @phone_number = cookies[:phone_number] 
    end 

Ich kann kein gutes Tutorial über Cookies und deren Verwendung finden.

Antwort

3

Werfen Sie einen Blick auf die Dokumentation von simple_form, speziell dieses Beispiel, wie die ERB in HTML erstellt wird:

simple_form_for @user do |f| 
    f.input_field :name 
    f.input_field :remember_me, as: :boolean 
end 

wird

<form> 
    ... 
    <input class="string required" id="user_name" maxlength="255" name="user[name]" size="255" type="text"> 
    <input name="user[remember_me]" type="hidden" value="0"> 
    <label class="checkbox"> 
    <input class="boolean optional" id="user_published" name="user[remember_me]" type="checkbox" value="1"> 
    </label> 
</form> 

Beachten Sie, wie f.input_field :name wird <input name="user[remember_me]" type="hidden" value="0">

Die name="user[remember_me]" Teil ist wichtig, weil das name Attribut bestimmt, wie der Parameter wird in Schienen gelesen. Wenn es nur einfach name='remember_me' wäre, dann würde params[:remember_me] funktionieren, aber dies verwendet eine spezielle Syntax zum Verschachteln von Objekten. Der eingehende Parameter ist params[:user][:remember_me]

Zusammenfassend verwenden Sie params[:user][<param_name>] in der Steuerung und nicht nur params[<param_name>].

eine secure-params Methode verwenden könnte auch zum Beispiel helfen:

def user_params 
    params.require(:user).permit(:remember_me, :name, etc) 
end 

# in controller 
cookies[:name] = user_params[:name]