Обновил мою модель, но взгляды не обновились.Я сделал что-то не так, или мне нужно сделать это самому? - PullRequest
0 голосов
/ 11 июля 2019

Я новичок в рельсах, поэтому извиняюсь, если я не проясню себя. Я настроил свои базы данных / модели (то же самое, да?). Позже я понял, что пропустил столбец в своей базе данных, поэтому добавил его с помощью rails g migration и т. Д. Затем сделал rails db: migrate и добавил его в схему. Это все работало отлично.

Моя проблема связана с моими взглядами. К этой базе данных подключена форма, которую нужно заполнить при загрузке изображения. Форма помечает некоторые поля этого столбца и добавляет текст. Новые столбцы не были добавлены в форму - нужно ли это делать вручную? Я могу, это не проблема, просто интересно, сделал ли я что-то не так.

Спасибо

Это та часть схемы, о которой я особенно говорю

 create_table "paintings", force: :cascade do |t|
    t.boolean "trees"
    t.boolean "river"
    t.boolean "cabin"
    t.boolean "waterfall"
    t.boolean "guest"
    t.boolean "animalguest"
    t.string "startcolour"
    t.string "shape"
    t.integer "likes"
    t.bigint "profile_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.boolean "beach"
    t.text "other"
    t.index ["profile_id"], name: "index_paintings_on_profile_id"
  end

«Пляж» и «Другое» - это новые столбцы. Кажется, они просто добавили.

<div class="field">
    <%= form.label :trees %>
    <%= form.check_box :trees %>
  </div>

  <div class="field">
    <%= form.label :cabin %>
    <%= form.check_box :cabin %>
  </div>

  <div class="field">
    <%= form.label :river %>
    <%= form.check_box :river %>
  </div>

  <div class="field">
    <%= form.label :waterfall %>
    <%= form.check_box :waterfall %>
  </div>

  <div class="field">
    <%= form.label :guest %>
    <%= form.check_box :guest %>
  </div>

  <div class="field">
    <%= form.label :animalguest %>
    <%= form.check_box :animalguest %>
  </div>

  <div class="field">
    <%= form.label :startcolour %>
    <%= select_tag(:startcolour, options_for_select([['white', 1], ['black', 2], ['clear', 3], ['acrylic black', 4], ['grey', 5], ['mixed', 6], ['other', 7]], 1)) %>
  </div>

  <div class="field">
    <%= form.label :shape %>
    <%= form.text_field :shape %>
  </div>

  <div class="field">
    <%= form.label :likes %>
    <%= form.number_field :likes %>
  </div>

  <div class="field">
    <%= form.label :picture %>
    <%= form.file_field :picture %>
  </div>
<%#
  <div class="field">
    <%= form.label :profile_id %>
  <%#  <%= form.text_field :profile_id %>
 <%# </div> %>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

и есть основная часть формы. Вы увидите пляж, и другие не были добавлены. Форма была изначально создана через эшафот. Два других столбца были добавлены с помощью миграции

.

1 Ответ

2 голосов
/ 11 июля 2019

Представления не обновляются автоматически, если вы меняете схему базы данных, вы должны сделать это самостоятельно. То же самое для любой бизнес-логики в контроллере, если есть.

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

  <div class="field">
    <%= form.label :beach %>
    <%= form.check_box :beach %>
  </div>

  <div class="field">
    <%= form.label :other %>
    <%= form.text_field :other%>
  </div>

Это отобразит требуемые элементы управления формой в соответствии с изменениями схемы.

Если вы ищете более простой способ создания таких интерфейсов без необходимости обрабатывать такие ситуации, то, возможно, вы захотите взглянуть на гем администратора Rails: https://github.com/sferik/rails_admin - он помогает вам быстро настроить CRUD-интерфейсы, включая функции поиска, сортировки, разбиения на страницы и так далее. Недостатком является то, что вам придется потратить некоторое время на изучение того, как его использовать, и вам, скорее всего, придется отказаться от него позже, если вы хотите использовать более сложную бизнес-логику в своем приложении - это проще, чем углубиться в его код, чтобы понять где подключить ваш собственный код. Если вы не научитесь использовать компоновщик или шаблон операций, где вы можете легко делегировать, не выполняя много работы с самим Rails Admin.

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