0
我有兩種形式,我想從new.html.erb提交,由status_updates Controller提供。 init表單和stat表單。爲什麼我的一個表單在這個頁面上提交兩個表單?
當我提交統計表格時,一切正常。
init窗體有一個不同的控制器它回答。問題是,當我提交這個表單時,它立即嘗試在初始表單的控制器中找到表單對象stat。
如果我去那個控制器並提供一個對象的實例,它會提交兩個表單。
下面是我提交init表單時的錯誤。
undefined method `model_name' for NilClass:Class
<div id='stat'>
<%= form_for(@status_update) do |f| %>
統計表單提交罰款。當提交初始表單時,它也會嘗試處理統計表單。如果我在init的動作控制器中提供模型@status_update,它將提交兩個表單。如果不是,則會拋出上述錯誤。
這裏的init的形式
<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
用戶S控制器更新動作:
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
- 請讓我知道我能做些什麼來改善這個問題。
我會檢查。雖然,如果我不包括其中一個或另一個,並提交它正確地通過的表單,怎麼辦? – 2013-02-18 22:12:13
我的控制器有這個:def new @status_update = current_user.status_update.build if user_signed_in? 結束 – 2013-02-18 22:24:10
表單不會相互衝突,只是您一次只能提交一個表單。所以是的,它必須工作。 – basgys 2013-02-18 22:25:06