我正在公司网站上的表格中修改text_field
到date_select
。我是RoR的新手,我有一个错误,说born_on
不能为空。
这是新代码
<div class="lobbyForm-group">
<%= f.label :born_on, class: 'lobbyForm-label' %>
<%= f.date_select 'user', :born_on, {:order => [:day, :month, :year], :start_year => 2001, :end_year => 1985, :prompt => true, :selected => Date.today}, {:class => "lobbyForm-control lobbyForm-control-selectDate"} %>
</div>
我的user.rb
中的这一行验证了它 validates :born_on, presence: true, if: :mentee?
点击验证时,我在日志中输出了这个输出:
"born_on(3i)"=>"3", "born_on(2i)"=>"12", "born_on(1i)"=>"2001"
以下是控制器中的相关代码:
protected
def after_sign_up_path
new_lobby_mentee_registrations_profile_path
end
def user_params
permitted_params = [:first_name, :last_name, :email, :password, :password_confirmation, :born_on, :marketing_communications_accepted]
params.require(:user).permit(*permitted_params)
params[:user].merge mentee: true
end
def ensure_required_user_information
if current_user.profile.blank?
redirect_to new_lobby_mentee_registrations_profile_path
end
end
end
我错过了什么?谢谢你的帮助。
答案 0 :(得分:0)
您必须自己在hash
方法中将日期Date
转换为user_params
类型:
date = Date.new params[:user]["born_on(1i)"].to_i, params[:user]["born_on(2i)"].to_i, params[:user]["born_on(3i)"].to_i
params[:user][:born_on] = date
permitted_params = [:first_name, :last_name, :email, :password, :password_confirmation, :born_on, :marketing_communications_accepted]
params.require(:user).permit(*permitted_params)
params[:user].merge mentee: true