未定义的方法`visible ='为零:NilClass

时间:2014-09-19 18:22:44

标签: ruby-on-rails

帮助他的项目中的一位同伴(我是铁杆新手),我想删除这一行,这会导致验证错误

  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

2 个答案:

答案 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