Rails: Как в Partial передать переменную класса?
Друзья, подскажите как решить такую ситуацию.
я определяю переменную экземпляра
class QuestionsController < ApplicationController
def show
@comment_answer = @answer.comments.new
end
end
Позже ее использую в partial
= form_with model: [answer, @comment_answer], class: ‘new-comment’ do |f|
p
= f.label :body, ‘Comment’
p
= f.text_area :body
p
= f.submit ‘add comment’
И позже при создании answer я вызываю render этого partial из другого Controllerа
class AnswersController < ApplicationController
def publish_answer
AnswersChannel.broadcast_to(@question,
ApplicationController.render(
partial: ‘answers/answer’,
locals: { question: @question, answer: @answer, current_user: current_user }
))
end
Выходит ошибка, потому что Partial не откуда брать @comment_answer
Вопрос: как мне в контроллере AnswersController передать в partial переменную экземпляра, чтобы в partial она была доступна как переменная экземпляра, а не как локальная??
Ответы (1 шт):
Автор решения: Василиса
→ Ссылка
Использовать @-переменные в партиалах - плохая идея, и ваш вопрос в очередной раз это доказывает. Самое простое решение в вашем случае:
form_with model: [answer, answer.comments.new], class: ‘new-comment’ do |f|
И убрать @comment_answer = @answer.comments.new из QuestionsController, само собой