我有两个要从 new.html.erb 提交的表单,由 status_updates 控制器提供。init 形式和 stat 形式。
当我提交统计表格时,一切正常。
init 表单有一个不同的控制器来响应。问题是,当我提交此表单时,它会立即尝试在控制器中为 init 表单查找stat表单的对象。
如果我去那个控制器并提供对象的一个实例,它将提交两种形式。
这是我提交初始化表单时的错误。
undefined method `model_name' for NilClass:Class
<div id='stat'>
<%= form_for(@status_update) do |f| %>
统计表格提交正常。当初始化表单被提交时,它也会尝试处理 stat 表单。如果我在 init 的操作控制器中提供模型 @status_update ,它将提交两种形式。如果不是,则会引发上述错误。
这是初始化表单的代码
<div id='init'>
<%= form_for(current_user, method: :put ) do |f| %>
<%= f.label :target_bf_percent %>
<%= f.text_field :target_bf_pct %>
<%= f.label :Deficit_percent %>
<%= f.text_field :deficit_pct %>
<%= f.label :activity_factor %>
<%= f.select( :activity_factor, options_for_select(
[['Pick One', nil],
['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 %>
</div>
以及统计表格的代码
<div id='stat'>
<%= form_for(@status_update) do |f| %>
<%= f.label :current_weight %>
<%= f.text_field :current_weight %>
<%= f.label :current_bf_pct %>
<%= f.text_field :current_bf_pct %>
<%= f.submit "Post", class:"btn btn-large btn-primary" %>
<% end %>
status_update 控制器的新动作:
def new
@status_update = current_user.status_update.build if user_signed_in?
end
用户控制器更新操作:
def update
if current_user.update_attributes!(params[:user])
flash[:success] = "Your personal settings have been saved!"
render new_status_update_path
else
flash[:error] = "Whoops! There was an error saving your personal settings. Please try again."
render new_status_update_path
end
end
- 请让我知道我可以做些什么来改善这个问题。