У меня есть форма, где я использую оператор if, чтобы вытащить имя пользователя из @ current_user.name (adauth), если форма является новой, и @ complaints.user.name, если форма редактируется.NoMethodError/validations not working
В валидации работала, но теперь, если я пытаюсь представить пустую форму или форму, где соответствующее значение поля равно нуль, то я получаю ошибку
NoMethodError in Complaints#create
Showing C:/Users/cmendla/RubymineProjects/internal_complaints/app/views/complaints/_form.html.erb where line #27 raised:
undefined method `name' for nil:NilClass
Trace of template inclusion: app/views/complaints/new.html.erb
Rails.root: C:/Users/cmendla/RubymineProjects/internal_complaints
Application Trace | Framework Trace | Full Trace
app/views/complaints/_form.html.erb:27:in `block in _app_views_complaints__form_html_erb__838826376_68516916'
app/views/complaints/_form.html.erb:1:in `_app_views_complaints__form_html_erb__838826376_68516916'
app/views/complaints/new.html.erb:3:in `_app_views_complaints_new_html_erb__529765002_56812308'
app/controllers/complaints_controller.rb:150:in `block (2 levels) in create'
app/controllers/complaints_controller.rb:135:in `create'
_form.html.erb для жалоб (где я есть условный код)
<strong>Originator:</strong><br>
<!-- Below will show the user name. If it is not a new complaint, we pull the user name from the complaint table
Otherwise, we get the name of the currently logged in user. -->
<% if action_name != "new" then %>
<%= @user.name %>
<% else %>
<%= @current_user.name %>
<%= f.hidden_field(:user_id, :value => @current_user.id) %>
<% end %>
</td>
линия 27 <%= @user.name %>
Я думаю, что то, что происходит не в том, что перезагрузка после неудачной проверки уже не действие «нового». Как я могу это исправить?
validates_presence_of :status
validates_presence_of :sales_order
validates_presence_of :product_name
validates_presence_of :coater_roll_number
validates_presence_of :coater_work_order
validates_presence_of :slitter_disposition
validates_presence_of :length
validates_presence_of :measure
validates_presence_of :disposition
validates_presence_of :reason_for_complaint
validates_presence_of :customer
Я думаю, что это происходит не в том, что, когда форма перезагружается после проваливать проверки, он больше не является действие контроллера «нового».
Где вы установите '@ user'? Убедитесь, что он заполнен значением. –