2014-04-17 19 views
0

目前,我收到以下錯誤未定義的方法:爲NilClass

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

這裏有下列文件... EventsController。我省略了一些方法。包括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 

SessionsHelper持有CURRENT_USER ......我剛剛在這裏的情況下發布整個文件。

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 

最後,這裏是Events#new。這是調用Events#create行動的看法:

<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 %> 

回答

0

沒關係,所有需要的是更新服務器。因此關閉服務器並鍵入導軌。

相關問題