0

私はレールが初めてです。給与明細コントローラーに問題があります。これを使用して、各従業員の給与明細を作成できます。問題は、条件が true になると、給与明細が既に作成されているように表示されることです。失敗すると、フォーム全体が再びレンダリングされます。

コントローラ内

def new
@teacher_payslip = TeacherPayslip.new
@teacher = Teacher.find(params[:teacher_id])
if params[:date] and TeacherPayslip.find_by_teacher_id(params[:teacher_id]).present?
  @old_salary_date = TeacherPayslip.find_by_teacher_id(params[:teacher_id]).salary_date
  @a = @old_salary_date.strftime("%b%Y")
  @new_salary_date = params[:date].to_date
  @b = @new_salary_date.strftime("%b%Y")
  if @a == @b
    respond_to do |format|
      format.js
    end
  end
end

終わり

Jsファイル

$('body').on("change","#teacher_payslip_salary_date",function(){
  var month = $('#teacher_payslip_salary_date').val();
  var teacher = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&')[0];
  var url = '/teacher_payslips/new?date='+ month +'&'+teacher
  $.ajax({
        url: url,
        dataType: 'html',
        type: 'GET',
        success: function(data){
        $('#payslip').html(data);
   }
  });
})

ここに画像の説明を入力

ガイドしてください。

4

1 に答える 1

0

コントローラーのアクションを次のように変更します。

def new
@teacher_payslip = TeacherPayslip.new
@teacher = Teacher.find(params[:teacher_id])
if params[:date] and TeacherPayslip.find_by_teacher_id(params[:teacher_id]).present?
  @old_salary_date = TeacherPayslip.find_by_teacher_id(params[:teacher_id]).salary_date
  @a = @old_salary_date.strftime("%b%Y")
  @new_salary_date = params[:date].to_date
  @b = @new_salary_date.strftime("%b%Y")
  if @a == @b
    respond_to do |format|
      format.js
    end
  else
    render nothing: true
  end
end
于 2013-10-10T09:40:19.233 に答える