帮助他的项目中的一位同伴(我是铁杆新手),我想删除这一行,这会导致验证错误
redirect_to new_event_path, flash: { error: errors }
她拉出了另一个错误
undefined method `visible=' for nil:NilClass
如何解决?
我的创建动作
def create
success_message = "Событие успешно создано."
if @user
@event = @user.events.new(event_params)
elsif params[:email].present?
pass = SecureRandom.hex[0..10]
unless @user = User.create(email: params[:email], password: pass, password_confirmation: pass)
redirect_to new_event_path, flash: { error: @user.errors.full_messages.join("<br/>") }
end
sign_in(:user, @user)
@user.send_temp_password(pass)
@event = @user.events.new(event_params)
success_message += " Вам на почту отправлено письмо с паролем. Ваш временный пароль: #{pass}. Сейчас Вы авторизованы в системе. Спасибо за участие в проекте!"
else
redirect_to new_event_path
end
@event.visible = true
if @event.save
@event.assign_price!(params[:event][:price])
@event.assign_types!(params[:event][:types_ids])
@event.assign_days!(params[:event][:days])
redirect_to edit_user_path(current_user), flash: { success: success_message }
else
@event.event_dates.destroy_all
errors = @event.errors.full_messages.join("<br/>")
redirect_to new_event_path, flash: { error: errors }
end
end
答案 0 :(得分:1)
您需要在重定向时返回以终止进一步执行相同的操作:
redirect_to new_event_path
应替换为
return (redirect_to(new_event_path))
答案 1 :(得分:0)
这是因为你在其他地方有@event undefined。所以如果出现问题,@ event将为零。
只需在else语句中定义@event。
success_message += " Вам на почту отправлено письмо с паролем. Ваш временный пароль: #{pass}. Сейчас Вы авторизованы в системе. Спасибо за участие в проекте!"
else
@event = Something
redirect_to new_event_path
end
@event.visible = true