Переменная экземпляра контроллера не отображается при просмотре JS - PullRequest
0 голосов
/ 27 мая 2019

У меня есть контроллер:

class CommentariesController < ApplicationController

  before_action :authenticate_user!
  before_action :find_commentary, only: [:update, :destroy]
  before_action :find_commentable, only: [:create]

  def create
    @commentary = @commentable.commentaries.new(commentary_params)
    @commentary.user_id = current_user.id
    @commentary.save!
  end

  def update
    @commentary.update(commentary_params) if current_user.authorized_for?(@commentary)
  end

  def destroy
    @commentary.destroy  if current_user.authorized_for?(@commentary)
  end

  private

  def find_commentary
    @commentary = Commentary.find(params[:id])
  end

  def commentary_params
    params.require(:commentary).permit(:body)
  end

  def find_commentable
    if params[:question_id]
      @commentable = Question.find(params[:question_id])
    elsif params[:answer_id]
      @commentable = Answer.find(params[:answer_id])
    end
  end
end

И посмотреть на его create действие:

("#<% @commentary.commentable_type.underscore %>-<% @commentary.id %>").append("<% j render @commentary %>")

_commentary.html.slim:

div class='d-flex justify-content-end mb-2'
  div class='card col-10'
    div class='card-body small text-muted' = commentary.body

Когда create действие обрабатывается, все в порядке, комментарии создаются и успешно сохраняются в БД, но вместо того, чтобы jQuery добавляет представленный HTML-код комментария, я не получаю ошибок, но такой ответ:

$("#-").append("")

Я не могу понять, что здесь происходит, поэтому я не получаю ошибок, комментарии сохраняются, но я получаю пустые поля объекта комментария.

1 Ответ

1 голос
/ 27 мая 2019

Существует разница между <% %> и <%= %> в ERB, первый ничего не выводит, второй делает.

$("#<% @commentary.commentable_type.underscore %>-<% @commentary.id %>")

Должно быть:

$("#<%= @commentary.commentable_type.underscore %>-<%= @commentary.id %>")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...