simple_form не показывает вложенное поле - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь использовать вложенные атрибуты simple_form, как предложено в https://github.com/plataformatec/simple_form/wiki/Nested-Models

Дело в том, что при рендеринге формы я просто вижу кнопку отправки, но не поле ввода. Что я делаю не так?

Screen with input field missing

_form.html.erb

<%= simple_form_for [:admin, @incident] do |f| %>
  <%= f.error_notification %>

  <%= f.simple_fields_for :comments do |builder| %>
      <%= builder.input :info, label: "Informe de seguimiento" %>
  <% end %>


  <div class="form-actions">
    <%= f.submit "Enviar", class: "btn btn-primary" %>
  </div>
<% end %>

incidents_controller.rb

class Admin::IncidentsController < ApplicationController
  before_action :set_incident, only: [:show, :edit, :update]
  def index
    @incidents = Incident.all
  end
  def show

  end
  def new
    @incident = Incident.new
    @incident.comments.build
  end
  def edit

  end

  def update
    respond_to do |format|
      if @incident.update(incident_params)
        format.html { redirect_to @incident, notice: 'Incidencia actualizada actualizada con éxito.' }
        format.json { render :show, status: :ok, location: @incident }
      else
        format.html { render :edit }
        format.json { render json: @incident.errors, status: :unprocessable_entity }
      end
    end
  end

  private
  def set_incident
    @incident = Incident.find(params[:id])
  end

  def incident_params
    params.require(:incident).permit(:info, :subject, :status, comments_attributes: [:info])
  end

end

incident.rb

class Incident < ApplicationRecord
  belongs_to :user, optional: true
  has_many :comments, dependent: :destroy
  accepts_nested_attributes_for :comments, allow_destroy: true, reject_if: proc { |attributes| attributes['info'].blank? }

  enum status: [:abierto, :tramite, :pendiente, :cerrado]
  after_initialize :set_default_status, :if => :new_record?

  def set_default_status
    self.status ||= :abierto
  end
end

comment.rb

class Comment < ApplicationRecord
  belongs_to :user, optional: true
  belongs_to :incident
end

1 Ответ

0 голосов
/ 09 мая 2018

Вам необходимо добавить @incident.comments.build к действию show Admin :: IncidentsController. Теперь он не имеет комментариев, я полагаю, поэтому форма пуста.

И вам нужно добавить :id к comments_attributes, без этого комментарий не может быть сохранен. Если вы планируете установить флажок «Удалить» для существующих комментариев, вам также необходимо добавить :_destroy в массив атрибутов

...