2016-02-13 65 views
1

在我的日曆應用程序中,註冊和未註冊的用戶都可以創建會議。在我meetings_controller我如何允許爲已註冊和未註冊的用戶創建一個新對象?

def new 
    @meeting = Meeting.new 
    @meeting = current_user.meetings.new(meeting_params) if current_user 

    end 
def create 

    respond_to do |format| 
     if @meeting.save 
     format.html { redirect_to @meeting, notice: 'Meeting was successfully created.' } 
     format.json { render :show, status: :created, location: @meeting } 
     else 
     format.html { render :new } 
     format.json { render json: @meeting.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
def meeting_params 
     params.require(:meeting).permit(:name, :start_time) 
    end 

因此,如果存在CURRENT_USER它創建current_user.meetings.new(meeting_params),如果不是,它應該沒有任何用戶創建只是一個Meeting.new。但是,它不工作,我得到一個錯誤:

undefined method `save' for nil:NilClass

respond_to do |format| 
    if @meeting.save 
    format.html { redirect_to @meeting, notice: 'Meeting was successfully created.' } 
    format.json { render :show, status: :created, location: @meeting } 
    else 

它運作良好,如果有一個CURRENT_USER,但爲什麼沒有用戶的會議定義爲「nill」如果我提到,喊只是一個Meeting_new?我怎樣才能使它工作? 謝謝!

回答

1

更改您的控制器代碼,如:

def new 
    @meeting = Meeting.new 
end 
def create 
    @meeting = Meeting.new(meeting_params) #edit 
    @meeting.user_id = current_user.id if current_user 
    respond_to do |format| 
    if @meeting.save 
     format.html { redirect_to @meeting, notice: 'Meeting was successfully created.' } 
     format.json { render :show, status: :created, location: @meeting } 
    else 
     format.html { render :new } 
     format.json { render json: @meeting.errors, status: :unprocessable_entity } 
    end 
    end 
end 
def meeting_params 
    params.require(:meeting).permit(:name, :start_time, :user_id) 
end 
+0

@Guarav謝謝,但它並沒有幫助,同樣的錯誤。 ( – Jakov

+0

@Jakov查看我的更新回答 –

+0

@Guarav是的,它幫助!謝謝! – Jakov