2014-09-19 6 views
1

помощи один спутник в своем проекте (я новичок в рельсы), и я хочу, чтобы удалить эту строку, что сделало бы ошибку валидацииНеопределенного метод `видимых =» для ноля: NilClass

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 

ответ

1

Вы должны вернуться при перенаправлении прекратить дальнейшее выполнение того же действия:

redirect_to new_event_path 

следует заменить

return (redirect_to(new_event_path)) 
+0

поблагодарить у! это работает – 138weare

0

Это потому, что вы @event неопределенными в еще estatement. Поэтому, если что-то не получается, @event будет равен нулю.

Просто укажите @event внутри оператора else.

success_message += " Вам на почту отправлено письмо с паролем. Ваш временный пароль: #{pass}. Сейчас Вы авторизованы в системе. Спасибо за участие в проекте!" 
else 
    @event = Something 
    redirect_to new_event_path 
end 
@event.visible = true 
Смежные вопросы