Приложение EJS / Express / Node - флажок и изменения - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь создать приложение для планирования автобусов. После того, как данные введены на странице «Создать / Создать» (или пересмотрены на этапе редактирования), план отобразит введенные данные на странице «Показать». Одним из входов является флажок. Если флажок установлен, я хотел бы, чтобы запись отображалась на странице результатов / редактирования плана. При редактировании я бы хотел, чтобы флажок был установлен, если он был отмечен ранее, затем я могу снять этот флажок или установить другой, чтобы эта информация отображалась на странице плана. Как и сейчас, после проверки объект не будет изменяться, чтобы показать, что флажок снят, и будет продолжать отображаться на странице результатов плана и останется отмеченным, если вы снимите отметку, покинете страницу редактирования и вернетесь.

Соответствующий код: планы. js страница:

router.post("/", middleware.isLoggedIn, function(req, res) {
    var openHouses =  req.body.openHouses;
}
var newPlan = {openHouses: openHouses}

и маршрут обновления:

router.put("/:id", middleware.checkPlanOwnership, function(req, res) {
    Plan.findByIdAndUpdate(req.params.id, req.body.plan, {new: true}, function(err, updatedPlan) {
        if (err) {
            res.redirect("/plans");
        } else {
            res.redirect("/plans/" + req.params.id);
        }
    });
});

На new.e js: соответствующая часть формы :

   <div class="form-group">
                            <input class="form-check-input" type="checkbox" value="Open Houses" ? "checked" : "" name="openHouses" id="openHouses">
                            <label class="form-check-label" for="openHouses">
                              Open House
                            </label>
                          </div>  

На соответствующей части страницы show.e js:

<div class="col-md-6">
            <h3 id="activities">Activities</h3> 
            <p><span><% if(plan.openHouses == "Open Houses"){ %>
               Open Houses</span></p> 
                <% } else { %>
                <p>  </p>
                <% } %>
                <p><span><% if(plan.seminar == "Home Buyers Seminar"){ %>
                    Home Buyers Seminars</span></p> 
                     <% } else { %>
                     <p>  </p>
                     <% } %>
                     <% if(currentUser && plan.author.id.equals(currentUser._id)){ %>
                        <a class="btn btn-warning btn-sm" href="/plans/<%= plan._id %>/edit">Edit</a>
                    <form class="delete-form" action="/plans/<%= plan._id %>?_method=DELETE" method="post">
                        <button class="btn btn-danger btn-sm">Delete</button>
                    </form>
                    <% } %>
        </div>  

Соответствующая часть схемы:

  var planSchema = new mongoose.Schema({
        openHouses: String,
        description: String,
        comments: [{
            type: mongoose.Schema.Types.ObjectId,
            ref: "Comment"
        }]
    });

У меня есть на странице приложения: mongoose.set('useFindAndModify', false);

Я прочитал здесь несколько флажков и записей goose, но не могу найти ничего, что получит напрямую.

Любой очень признателен за помощь.

введите описание изображения здесь

введите описание изображения здесь

...