2014-11-06 4 views
1

Я новичок в рельсах и бегущих рельсах 4 на Windows. Я имею дело с этой ошибкой в ​​течение нескольких дней. Я думаю, что что-то может быть неправильно с предыдущими данными, которые я ввел, поэтому я попытался создать новое резервирование в консоли, чтобы увидеть, что происходит не так, но пока не повезло.NoMethodError in Reservations # index undefined метод `strftime 'для nil: NilClass

Это моя модель пользователя:

class User < ActiveRecord::Base 
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 

    attr_accessible :name, :email, :password, :remember_me 

    has_many :reservations 
end 

Бронирование модели:

class Reservation < ActiveRecord::Base 

    attr_accessible :user_id, :user_name, :start_time, :end_time, :project, :which_room 

end 

Индекс бронирования:

<tbody> 
    <% @reservations.each do |reservation| %> 
    <tr> 
     <td><%= current_user.name %></td> 
     <td><%= reservation.project %></td> 
     <td><%= reservation.start_time.strftime("%I:%M %p")%></td> 
     <td><%= reservation.end_time.strftime("%I:%M %p")%></td> 
     <td><%= reservation.which_room %></td> 
     <td><%= link_to 'Edit', edit_reservation_path(reservation) %></td> 
     <td><%= link_to 'Destroy', reservation, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
    <% end %> 
</tbody> 
    </table> 
</div> 

Показать действие:

<p> 
<strong>User:</strong> 
<%= @user.name %> 
</p> 

<p> 
<strong>Project:</strong> 
<%= @reservation.project %> 
</p> 

<p> 
<strong>Start time:</strong> 
<%= @reservation.start_time %> 
</p> 

<p> 
<strong>End time:</strong> 
<%= @reservation.end_time %> 
</p> 

<p> 
<strong>Room number:</strong> 
<%= @reservation.which_room %> 
</p> 

И контроллер Бронирование: класс ReservationsController < ApplicationController before_action: set_reservation, только: [: шоу, редактировать,: обновление,: уничтожить]

def index 
    @reservations = Reservation.all.order(which_room: :asc, start_time: :desc) 
end 

def show 
end 

def new 
    @reservation = Reservation.new 
end 

def edit 
end 

def create 
    @reservation = Reservation.new(reservation_params) 

respond_to do |format| 
    if @reservation.save 
    format.html { redirect_to @reservation, notice: 'Reservation was successfully created.' } 
    format.json { render action: 'show', status: :created, location: @reservation } 
    else 
     format.html { render action: 'new' } 
     format.json { render json: @reservation.errors, status: :unprocessable_entity } 
    end 
    end 
end 

def update 
    respond_to do |format| 
    if @reservation.update(reservation_params) 
     format.html { redirect_to @reservation, notice: 'Reservation was successfully updated.' } 
     format.json { head :no_content } 
    else 
    format.html { render action: 'edit' } 
    format.json { render json: @reservation.errors, status: :unprocessable_entity } 
    end 
    end 
end 

def destroy 
    @reservation.destroy 
    respond_to do |format| 
    format.html { redirect_to reservations_url } 
    format.json { head :no_content } 
    end 
end 

private 
    def set_reservation 
    @reservation = Reservation.find(params[:id]) 
end 

def reservation_params 
    params.require(:reservation).permit(:project, :start_time, :end_time, :which_room) 
end 
end 

ТИА!

ответ

1

Любое резервирование.start_time или reservation.end_time равно нулю.

+0

Для конкретной записи? Должен ли я удалить все текущие записи из консоли и обновить? – eatsleepcode

+0

Просто добавьте 'if' для проверки наличия даты в вашем представлении или если вы хотите удалить все, в консоли rails выполните Reservation.where ('start_time IS NULL ИЛИ end_time IS NULL'). Destroy_all –

Смежные вопросы