我有一个需要更新用户对象属性的表单。
以下是我归结为的三个步骤:
动作“新”需要为表单提供一个对象来操作
表单需要知道要为哪个对象收集值
提交表单时,它需要将这些参数发送到更新用户对象的函数
如果这一切都是洁净的,这就是我为实现这一目标所做的努力。
在“新”操作中,我尝试像这样提供用户对象:
@current_user = current_user
然后,在视图中,表单如下所示:
<%= form_for (@current_user) do |f| %>
<%= f.label :target_bf_pct %>
<%= f.text_field :target_bf_pct %>
<%= f.label :activity_factor %>
<%= options_for_select([['Sedentary (Desk Job)', 1.2],
['Light Activity (1-3 day a week)', 1.35],
['Moderate Activity (3-5 days a week)', 1.55],
['Very Active ( 6-7 days a week)', 1.75],
['Extremely Active (Atheletic Endurance)', 1.95]])
%>
<%# f.submit "Post", class:"btn btn-large btn-primary" %>
<% end %>
我此时遇到的错误是:
undefined method `user_path' for #<#<Class:0x007fd943d00d08>:0x007fd944e5b6c0>
它指的是表单 @current_user 对象,它应该对应于新操作中的 @current_user 实例......
重要的提示:
我正在为我的会话控制器使用设计来创建新用户和处理会话。
我不相信我对表单助手 options_for_select 的使用被正确使用,因为我还没有为它分配一个一旦选择它应该代表的值,比如“activity_factor”