У меня есть две формы, которые я хочу отправить из new.html.erb, которые обслуживаются контроллером status_updates. Форма init и форма stat.Почему моя одна форма представляет обе формы на этой странице?
Когда я отправляю стат-форму, все работает отлично.
В форме инициализации есть другой контроллер, на который он отвечает. Проблема в том, что когда я отправляю эту форму, она сразу же пытается найти объект для формы внутри контроллера для формы init.
Если я иду на этот контроллер и предоставил экземпляр объекта, он отправит формы.
Вот ошибка, когда я представляю форму init.
undefined method `model_name' for NilClass:Class
<div id='stat'>
<%= form_for(@status_update) do |f| %>
Форма старта подает штраф. Когда отправляется форма init, она также пытается обработать форму stat. Если я предоставил модель @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
- Пожалуйста, дайте мне знать, что я могу сделать, чтобы улучшить этот вопрос.
проверю. Хотя, как получилось, если я не включаю тот или другой и не отправляю форму, она проходит правильно? –
Мой контроллер имеет это в нем: def new @status_update = current_user.status_update.build, если user_signed_in? end –
Формы не конфликтуют друг с другом, просто вы можете отправлять только по одному. Так что да, он должен работать. – basgys