Rails4:通过Ajax进行表单更新无法正常工作 - >模板错误

时间:2014-09-04 11:40:50

标签: javascript jquery ruby-on-rails ajax coffeescript

我正在尝试在用户输入有效日期时更新表单中的部分。 CoffeeScript是 启动对控制器的调用,控制器启动'.js.erb'动作进行渲染 形式偏。我想要的是将用户输入的日期提供给“自动填充”字段,所以 只返回具有特定有效日期的值并提供...

见下面的代码:

flights.s.coffee:

$ -> 
    $("#flight_f_date").focusout ->
        $.ajax
            url: "/flight/populateAircraftsSelection"
            data:
                f_date: $('#flight_f_date').val()
            dataType: "script"

我的控制器功能如下:

def populateAircraftsSelection

  puts "AircraftsSelection" + params[:f_date.to_s]

  @flight_date = params[:f_date].to_s

  respond_to do |format|
    format.js
  end 
end

populateAircraftsSelection.js.erb:

$("#flight_test").html("<%= escape_javascript render partial: 'test', :locals => { flight: @flight, flight_date: @flight_date  }  %>");

和_test.htnl.erb部分

<div id="#test">
    <%= f.label :aircraft_id, "Kennzeichen" %><br>
    <%= f.hidden_field :aircraft_id %>
    <%= f.autocomplete_field :helper_registration_field ,   
                             autocomplete_aircraft_registration_flights_path(:flight_date => 
                             @flight_date.to_s), 
                             :update_elements => { :id => '#flight_aircraft_id', :acfttype => 
                             '#flight_helper_aircraft_field' } %>
</div>

我收到以下错误:

ActionView::Template::Error (undefined local variable or method `f' for #<#     
<Class:0x007fee2cb62c28>:0x007fee298a0ec0>):
    1: <div id="#test">
    2:
    3:
    4:  <%= f.label :aircraft_id, "Kennzeichen" %><br>
    5:                      <%= f.hidden_field :aircraft_id %>
    6:
    7:                  <%= f.autocomplete_field :helper_registration_field , 
 autocomplete_aircraft_registration_flights_path(:flight_date => @flight_date.to_s),

app/views/flights/_test.html.erb:4:in    
`_app_views_flights__test_html_erb__1386346884294841760_70330389540980'
  app/views/flights/populateAircraftsSelection.js.erb:1:in 
 `_app_views_flights_populate_ircrafts_election_js_erb__2604210186479166916_70330440189180'
   app/controllers/flights_controller.rb:179:in `populateAircraftsSelection'

我认为'f'必须知道,因为我将这个部分添加到'f'所在的更大的形式中 已经知道.....

我做错了什么?或者:有更好的方法来更新表单内的线索 用户互动.....?

提前感谢您提供的任何帮助......

德克

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了一个技巧 - 使用会话变量。我知道,它很脏,与AJAX无关,因为它的设计,但它的工作原理...... 只有问题才能在两个或三个位置区分何时使用params以及何时使用会话。但 仍然使用AJAX和Coffeescript来发起这种呼叫......