Попытка отредактировать статью в ruby ​​на рельсах - PullRequest
0 голосов
/ 21 марта 2019

Я новичок в ruby ​​on rails и думаю, что мне чего-то не хватает, когда дело доходит до изменения значений статьи, называемой назначением, в базе данных. Я перечислю соответствующие фрагменты кода.

У меня настроена страница администратора, на которой перечислены все запланированные встречи пользователей со ссылкой для редактирования рядом с каждой, которая ведет меня на правильные встречи / id # / страницу редактирования. Страница администратора в просмотрах:

<div align="center">
    <div class="col-md-6">
      <div class="card">
        <h5 class="card-header">All Scheduled Appointments</h5>
        <div class="card-body">
          <%@appointments.each do | appt |%>
            <%="Appointment for #{appt.owner_email} on #{appt.date} in the #{appt.time}"%> <%= link_to 'Edit', edit_appointment_path(appt) %>
            </br>
          <%end%>
        </div>
      </div>
    </div>
  </div>

Файл assignments_controller.rb:

class AppointmentsController < ApplicationController
    def edit
        @appointment = Appointment.find(params[:id])
    end
end

Страница редактирования, которая просто содержит параметры для администратора, чтобы выбрать желаемые даты / время с помощью кнопки отправки. Я хотел, чтобы администратор выбрал эти значения, чтобы обновить то, что пользователь предварительно настроил на них. Нажатие кнопки «Отправить» просто обновляет страницу и, похоже, больше ничего не делает. Файл edit.html.erb в представлениях:

<h1 align="center">Edit Existing Appointment</h1>

<form action="edit" method="refresh">
<div class="container-fluid">
  <div class="row">
    <div class="col-md-2">
      <div class="form-group">
        <label for="desiredDate">Desired Date</label>
        <input type="date" class="form-control" id="desiredDate" aria-describedby="desiredDate" placeholder="" name="desiredDate">
      </div>
    </div>
    <div class="col-md-3">
      <div class="form-group">
        <label for="desiredTime">Desired Time</label>
        <select class="form-control" id="desiredTime" name="desiredTime">
          <option>Morning</option>
          <option>Afternoon</option>
          <option>Evening</option>
        </select>
      </div>
    </div>
  </div>

  <div class="row">
    <div class="col-md-4 offset-md-4 text-center">
       <%= submit_tag "Submit", class:"btn btn-primary"%>
    </div>
  </div>
</form>

Мой код route.rb, если это поможет:

Rails.application.routes.draw do
  devise_for :users
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
  root 'welcome#index'

  get '/services', to: 'welcome#services'
  get '/about_us', to: 'welcome#about_us'
  get '/schedule', to: 'welcome#schedule'
  get '/new_car', to: 'welcome#new_car'
  get '/my_profile', to: 'welcome#my_profile'
  get '/admin', to: 'welcome#admin'

  devise_scope :user do
    get '/sign_up', to: 'devise/registrations#new'
    get '/login', to: 'devise/sessions#new'
    get '/logout', to: 'devise/sessions#destroy'
  end

  get '/appointments/edit', to: 'appointments#edit'
  resources :cars
  resources :appointments
end

Любые предложения будут оценены.

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Итак, обо всем по порядку: почему вы не используете рельсы помощников?У вас будет более чистый код, и его будет легче отлаживать.

При этом ваша форма должна указывать на правильный метод контроллера (update в вашем случае).В любом случае, я бы попробовал что-то вроде этого:

<div class="container-fluid">
  <%= form_for @appointment do |f| %>
    <div class="row">
      <div class="col-md-2">
        <div class="form-group">
          <%= f.label :desiredDate %>
          <%= f.date_field :desiredDate %>
        </div>
      </div>
      <div class="col-md-3">
        <div class="form-group">
          <%= f.label :desiredTime %>
          <%= f.select :desiredTime, ["Morning", "Afternoon", "Evening"], {}, class: "form-control"
        </div>
      </div>
    </div>
    <div class="row">
      <div class="col-md-4 offset-md-4 text-center">
         <%= f.submit "Submit", class:"btn btn-primary"%>
      </div>
    </div>
  </form>
</div>

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

0 голосов
/ 21 марта 2019

Попробуйте исправить это: <form action="edit" method="refresh">. Измените действие на "<%=appointment_path(params[:id])%>" и метод на «публикацию».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...