从jquery和haml渲染部分

cor*_*ded 6 jquery haml renderpartial ruby-on-rails

我计划的功能是根据从select标签中选择的数字插入一些表单元素.

我有一个名为number_of_passengers的选择标签,我打算为所选数字动态附加新的乘客字段.假设我从number_of_passengers中选择2,那么2个表单应该出现在字段集中.这些表格包含姓名,年龄等.

我试过这样:

从jquery调用rails函数?

并且只是将它转换为haml-speak但是每当我使用:javascript标签时我都会收到错误.我也不认为一旦我进入javascript标签就可以"逃脱"

:javascript
  $('#number_of_passengers').change(function() {
    var $num_of_passengers = $(this).val();
    for($i=0; $i<$num_of_passengers;$i++) {
      $('.passenger-info ul').append('<%= escape_javascript( render :partial => "new_passenger", :locals => {:booking => @booking }) %>');
    }
  })
Run Code Online (Sandbox Code Playgroud)

因为我在form_for中,如何将@booking变量传递给本地?看起来真的很复杂,而且我打算从循环20次(20个最大乘客)中做出肮脏的方式,然后根据所选的数字隐藏/显示它们.但那太脏了你不觉得吗?

nat*_*vda 12

要使插值工作,你需要做类似的事情

!= "$('.passenger-info ul').append('#{escape_javascript( render :partial => 'new_passenger', :locals => {:booking => @booking })}');
Run Code Online (Sandbox Code Playgroud)

如此简单的说:添加!=到行的开头,并在双引号之间包含字符串.

您的问题@booking:我建议您调查一些嵌套的表单示例,以使您更清楚(例如,这个这个 railscast).


cor*_*ded 3

我实际上通过添加以下内容设法做到了这一点:

respond_to do |format|
  format.js { render :partial => "new_passenger" }
end
Run Code Online (Sandbox Code Playgroud)

所以即使请求是在js中,它也会返回一个html部分。俏皮