Question

Currently, I'm receiving the following error:

NoMethodError in EventsController#create
undefined method `events' for nil:NilClass

Here are the following files... EventsController. I've omitted some of the methods. Including Events#new

class EventsController < ApplicationController
  include SessionsHelper

  def create
    @event = current_user.events.build(event_params)
    if @event.save
        flash[:success] = "You created an event"
        redirect_to events_path
    else
        redirect_to new_event_path
    end
  end

  private

def event_params
    params.require(:event).permit(:description)
end
end

The SessionsHelper holds current_user...I've posted the whole file here just in case.

module SessionsHelper

  def sign_in(user)
    remember_token = User.new_remember_token
    cookies.permanent[:remember_token] = remember_token
    user.update_attributes(remember_token: User.hash(remember_token))
    self.current_user = user
  end

  def current_user
    remember_token = User.hash(cookies[:remember_token])
    @current_user ||= User.find_by(remember_token: remember_token)
  end

  def current_user=(user)
    @current_user = user
  end

  def sign_out
    current_user.update_attributes(remember_token: 
            User.hash(User.new_remember_token))
    cookies.delete(:remember_token)
    self.current_user = nil
  end

  def signed_in?
    !current_user.nil?
  end
end

And, finally, here is the Events#new. This is the view that calls the Events#create action:

<h1>Events#new</h1>

<!-- url: will send all form data to the action specified -->

<%= form_for(:event, url: {action: "create"}) do |f| %> 

    <%= f.label "Description" %>
    <%= f.text_area :description, value: "Write here" %><br>

    <%= f.submit "Create event" %>

<% end %>
Was it helpful?

Solution

Nevermind, all that's needed is to update the server. So close the server and type rails s.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top