我在實例的觀點,即用戶還沒有證實他們的電子郵件呈現形式:[ID]。該表格還允許他們輸入他們的電子郵件偏好。得到錯誤缺少必需的鍵:上的form_tag
這裏是表格。
<%= form_tag update_email_and_sports_url, class: "form-signin", method: 'patch' do %>
<h2>Please confirm your email</h2>
<%= email_field_tag :email, nil, class: "input-block-level", placeholder: current_user.email %>
<h2>We'll email you when opportunities arise to play any of the sports you select below:</h2>
<%= check_box_tag :basketball, checked = false %>
<%= check_box_tag :volleyball, checked = false %>
<%= check_box_tag :soccer, checked = false %>
<%= check_box_tag :football, checked = false %>
<%= check_box_tag :hockey, checked = false %>
<%= check_box_tag :kickball, checked = false %>
<%= check_box_tag :softball, checked = false %>
<%= f.hidden_field_tag :user_id, :value => current_user.id %>
<div>
<%= submit_tag "Submit", class:"btn btn-large btn-success" %>
</div>
的觀點甚至不會渲染,我得到這個錯誤:
No route matches {:controller=>"users", :action=>"update_preferences"} missing required keys: [:id]
它的說法錯誤的是我的form_tag線。這是我的路線。
patch '/user/preferences/:id' => 'users#update_preferences', :as => 'update_email_and_sports'
我的控制器
def update_preferences
current_user.email = params[:email]
preference = Preference.new(preference_params)
redirect_to root_url
end
def preference_params
params.require(:preference).permit(:user_id, :basketball, :football, :softball, :soccer, :kickball, :volleyball, :hockey)
end