Ruby on rails 如何允许为已注册和未注册的用户创建新对象?
在我的日历应用程序中,已注册和未注册的用户都可以创建会议。在我的会议中\u控制器:Ruby on rails 如何允许为已注册和未注册的用户创建新对象?,ruby-on-rails,Ruby On Rails,在我的日历应用程序中,已注册和未注册的用户都可以创建会议。在我的会议中\u控制器: 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 {
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
因此,如果当前_用户存在,它将创建当前_用户.meetings.new(meeting_参数),如果不存在,它将只创建一个没有任何用户的meeting.new。但是,它不起作用,我得到一个错误:
nil:NilClass的未定义方法“save”
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
如果有一个当前的用户,它工作得很好,但是如果我提到它只是一个新的会议,为什么没有用户的会议定义为“nill”?我怎样才能让它工作?
谢谢大家! 更改控制器代码,如下所示:
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
@瓜拉夫,谢谢你,但没用,同样的错误。(@Guarav是的,这很有帮助!谢谢!