status_updates コントローラーによって提供される new.html.erb から送信したいフォームが 2 つあります。init フォームと stat フォーム。
統計フォームを送信すると、すべてが完全に機能します。
init フォームには、応答する別のコントローラーがあります。問題は、このフォームを送信すると、init フォームのコントローラー内でstatフォームのオブジェクトをすぐに見つけようとすることです。
そのコントローラーに移動してオブジェクトのインスタンスを提供すると、両方のフォームが送信されます。
initフォームを送信したときのエラーは次のとおりです。
undefined method `model_name' for NilClass:Class
<div id='stat'>
<%= form_for(@status_update) do |f| %>
統計フォームは正常に送信されます。init フォームが送信されると、stat フォームも処理しようとします。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
ユーザーコントローラーの更新アクション:
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
- この質問を改善するために私にできることがあれば教えてください。