Направляющие: Найдите задачи, которые были созданы в определенный день?

Нельзя создать переменную events в методе componentDidMount и получить к ней доступ в методе render. Вместо этого вы можете непосредственно создать переменную events в методе рендеринга, поскольку она будет перезапущена, когда ваш запрос fetch будет выполнен и состояние обновлено.

Также убедитесь, что вы установили eventData для пустого массива в начальном состоянии, а не для пустого объекта, иначе вы получите ошибку, пытаясь использовать для него метод map.

export default class EventsPage extends Component {
  constructor(props) {
    super(props);

    this.state = {
      eventData: [],
      isLoggedin: true
    };
  }

  componentDidMount() {
    fetch("http://localhost:5999/events/" + this.props.match.params.userId, {
      headers: {
        "Content-Type": "application/json"
      },
      method: "GET",
      mode: "cors",
      credentials: "include"
    })
      .then(response => response.json())
      .then(data => {
        if (data["code"] === 200) {
          console.log("OK");
          this.setState({
            eventData: data.events_data,
            isLoggedin: true
          });
        } else {
          console.log("NOT OK");
          this.setState({
            eventData: data.events_data,
            isLoggedin: false
          });
        }
      });
  }

  render() {
    let events = this.state.eventData.map(event => (
      <Events
        name={event.name}
        image_url={event.image_url}
        start_time={event.start_time}
        end_time={event.end_time}
        price={event.price}
        age_from={event.age_from}
        age_to={event.age_to}
        x_coord={event.x_coord}
        y_coord={event.y_coord}
        status={event.status}
        status_id={event.status_id}
        members_total={event.members_total}
        members_needed={event.members_needed}
        owner_id={event.owner_id}
        address={event.address}
      />
    ));

    return <>{events}</>;
  }
}
5
задан John Topley 12 April 2009 в 21:19
поделиться

3 ответа

def todays_tasks(now = Time.now)
  Task.find(:all, :conditions => ["starts_at > ? AND < ?", now.at_beginning_of_day, now.at_end_of_day])
end

Вуаля!

11
ответ дан 18 December 2019 в 13:19
поделиться

Немного расширяю ответ Августа. В вашей модели Task вы можете определить метод для извлечения этих задач для вас.

  def self.todays_tasks(t = Time.now)
    Task.all(:conditions => ["created_at > ? AND created_at < ?", t.at_beginning_of_day, t.tomorrow.at_beginning_of_day])
  end

Это помогает сохранить ваш контроллер в скине. Я также сравниваю конец дня с началом завтра. Это гарантирует, что если пользователь создает задание в 23:59:59, оно остается в правильном дне.

3
ответ дан 18 December 2019 в 13:19
поделиться

Не было бы:

Task.all(:conditions => ["created_at >= ? AND created_at < ?", Time.now.at_beginning_of_day, Time.now.tomorrow.at_beginning_of_day] )

Иначе вы бы никогда не проверили 00:00:00 в день задач, а 11:59:59 - последнее значение в конце дня заданий.

0
ответ дан 18 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: