我不知道如何使用cookie实现简单的CRUD。
第一个问题:放什么代替@user?我只有这个: 我的表格:
<%= 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 %>
下一个问题:如何正确地将值从表单字段发送到cookies []。 之前我只使用了params方法(例如clients_params)和实例变量。
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
我找不到任何关于cookie以及如何使用它们的好教程。
答案 0 :(得分:3)
查看simple_form的文档,特别是关于如何将ERB编译为HTML的示例:
simple_form_for @user do |f|
f.input_field :name
f.input_field :remember_me, as: :boolean
end
变为
<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>
注意f.input_field :name
成为<input name="user[remember_me]" type="hidden" value="0">
name="user[remember_me]"
部分很重要,因为name
属性决定了如何在rails中读取参数。如果它只是name='remember_me'
,那么params[:remember_me]
可以工作,但这是使用一些特殊的语法来嵌套对象。传入的参数将为params[:user][:remember_me]
总之,在控制器中使用params[:user][<param_name>]
而不只是params[<param_name>]
。
使用secure-params方法也有帮助,例如:
def user_params
params.require(:user).permit(:remember_me, :name, etc)
end
# in controller
cookies[:name] = user_params[:name]