Загрузить изображение с активной записью и сохранить элемент со ссылкой на модель сеанса - PullRequest
0 голосов
/ 12 сентября 2018

2 вопроса на самом деле: 1) Я пытаюсь сохранить заметку, которая принадлежит модели клиента (которая также используется в качестве логина для создания сеанса - поэтому сеанс [: id] = @ client.id) 2) Заметкаэто изображение, загруженное с использованием модели ActiveRecord.

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

db схема содержит 2 таблицы ActiveRecord.Кажется, что никаких ошибок не появляется, но новая заметка не создается (@ note.save = false), что может быть связано с тем, что в настоящее время в новую заметку ничего не сохраняется, только новый блоб ... в cmd вы можете увидеть блобсоздание вставки работает нормально, а затем откат следующей транзакции.Как добавить логику для сохранения @ client.id в заметке?

Под моими фрагментами кода ...

форма для просмотра:

<div class="image-upload">
        <h3>Upload image of sick note</h3>
        <div class="signup-form">
            <%= form_for(@note) do |f| %>
                <%= f.file_field :image %>          
                <%= f.submit "Load Sick Note", class: "btn-submit" %> 
            <% end %>
        </div>
    </div>

Создание в контроллере:

def create
        @note = Note.new(note_params)
        if @note.save 
            redirect_to '/' 
        else 
            redirect_to '/dashboard' 
        end 
    end

    private

    def note_params
        params.require(:note).permit(:image)
    end

Примечание модели:

class Note < ApplicationRecord
    belongs_to :client
    has_one_attached :image
end

1 Ответ

0 голосов
/ 12 сентября 2018

Вместо

@note = Note.new(note_params)

try

@note = Client.new.notes.build(note_params)

приходит метод .notes (то есть "Client.new.notes")от предположения, что у вас есть has_many :notes объявление в вашей Client модели.

Если в модели клиента вы используете только объявление has_one :note, метод .build() не будет работать.

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