У меня возникает проблема, связанная с передачей аргументов в рельсах. Из моего контроллера я хочу отправить переменную в качестве аргумента в задание обработчика запроса. Но я уверен, что я делаю что-то неправильно в отношении переменных и аргументов. Студент - это название модели. На самом деле таблица студентов содержит некоторые записи. У меня возникла следующая проблема.Проблема, связанная с аргументами метода в рельсах
формальный аргумент не может быть переменной экземпляра.
Вот мой код:
Мое приложение/контроллеры/файл students_controller.rb является: -
class StudentsController < ApplicationController
attr_accessor :xmodel
def new
@student=Student.new
@students=Student.all
end
def create
@student=Student.new(u_params)
@student.set_insertbool_field
xmodel=Student.last
RequestHandlerJob.doit_later(:xmodel)
if @student.save
redirect_to new_student_path
end
end
def u_params
params.require(:student).permit(:id , :firstname, :lastname)
end
end
Мое приложение/работа файл/request_handler_job.rb является:
class RequestHandlerJob < ActiveJob::Base
queue_as :default
self.queue_adapter = :sidekiq
def doit_later(:xmodel)
# Do something later
@extract_bool=:xmodel.inserted_bool
if @extract_bool == 1
redirect_to new_student_path , :notice => "Inserted and Queued"
end
end
end
я столкнулся, вероятно, только потому, что «модель» переменной – Abhradip
лишь предположение, почему вы проходя символ ': xmodel' вместо переменной' xmodel' определенно ранее Кроме того,? afaik, передать экземпляр sidekiq - это плохая практика. В общем, вы должны отправить идентификатор. RequestHandlerJob.doit_later (Student.last.id) ', а затем в вашем работнике просто выберите требуемую запись' Student.find (student_id) ' – retgoat
Он показывал неопределенный метод «doit_later» ... Я новичок в рельсах, поэтому я не знаю, что мне следует передать в качестве аргумента? Это: xmodel или просто модель. Раньше я проходил @model, но формальная аргументация ошибки не могла быть переменная экземпляра. – Abhradip