index.html.erb

<div id="id_number">-</div>

<script type="text/javascript">
  $(document).ready(function() {

    $('#commendations_click').click(function(evt) {
      evt.preventDefault();
      window.location = "<%=j commendations_path(format: 'pdf') %>"
        + "?idnumber=" + $('#id_number').html()
        + "&amp;employee_movement_id=" + $('#employee_movements_select').val()
    });

    $('#empname').autocomplete({
      source: $('#empname').data('autocomplete-source'),
      select: function( event, ui ) {
        $("#empname").val(ui.item.last_name + ', ' + ui.item.first_name + ' ' + ui.item.middle_name);
        $("#name").html(ui.item.last_name + ', ' + ui.item.first_name + ' ' + ui.item.middle_name);
        $("#id_number").html(ui.item.id_number);

        $.ajax({
          url: "<%= update_employee_movements_path %>",
          data: { id_number : ui.item.id_number },
          dataType: "script"
        });

        return false;
      }
    })
    .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
      return $( "<li>" )
        .append( "<a>Name: " + item.last_name + ', ' + item.first_name + ' ' + item.middle_name + "<br>ID: " + item.id_number + "</a>" )
        .appendTo( ul );
    };

  });
</script>


report_controller.rb

def commendations
  emdates = EmployeeMovement.last_2_dates_obtained(params[:employee_movement_id])
  date_from = emdates[0].date_obtained
  date_to   = emdates.length == 1 ? nil : emdates[1].date_obtained
  emp       = Employee.find_by_id_number(params[:id_number])

  ...more code below...
end


请看最后一行。在这里,params [:id_number]将返回nil。但是,如果我将URL中的id_number更改为idnumber,并调用params [:idnumber],则将获得一个相关的值。

为什么从我的表彰操作访问id_number会返回nil?为此有约定吗?约定是在jquery端还是在rails端?

最佳答案

在HTML代码中的某个位置,元素的ID为idnumber而不是id_number。这不是约定,而是代码中的错字。

10-07 14:08