Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从jquery和haml中呈现部分_Jquery_Ruby On Rails_Haml_Renderpartial - Fatal编程技术网

从jquery和haml中呈现部分

从jquery和haml中呈现部分,jquery,ruby-on-rails,haml,renderpartial,Jquery,Ruby On Rails,Haml,Renderpartial,我计划执行的功能是根据从select标记中选择的数字插入一些表单元素 我有一个select标签,名为number of theu passengers,我计划为所选号码动态添加新的passenger字段。假设我从乘客数量中选择2,那么字段集中应该出现2个表单。这些表格包括姓名、年龄、体重等 我试着这样做: 并将其转换为haml speak,但每当我使用:javascript标记时都会出错。此外,我认为一旦我进入javascript标记,我就无法逃脱它 :javascript $('#numb

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

我有一个select标签,名为number of theu passengers,我计划为所选号码动态添加新的passenger字段。假设我从乘客数量中选择2,那么字段集中应该出现2个表单。这些表格包括姓名、年龄、体重等

我试着这样做:

并将其转换为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 }) %>');
    }
  })

此外,由于我的表单为,如何将@booking变量传递给本地用户?这似乎真的很复杂,我正计划做肮脏的方式,不只是循环20次最多20名乘客,然后根据所选的人数隐藏/显示他们。但是这太脏了,你不觉得吗?

Rails语法一直在变化,但这不应该吗

render :partial => "new_passenger", :locals {:booking => @booking })

您可以在javascript块中转义javascript,因为您正在评估ruby标记

您正在接收哪些错误消息

我不清楚你问题的后半部分,但这就是你想要的吗:

- form_for @user do |f|
  # f.object is equal to @user

要使插值工作,您需要执行以下操作

!= "$('.passenger-info ul').append('#{escape_javascript( render :partial => 'new_passenger', :locals => {:booking => @booking })}');
简单地说:添加!=添加到行的开头,并在双引号之间包含字符串


您关于@booking的问题:我建议您调查一些嵌套表单示例,以使您更清楚,例如和railscast。

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

respond_to do |format|
  format.js { render :partial => "new_passenger" }
end

因此,即使请求是js格式的,它也会返回一个html部分。你好,谢谢你的回复。我生病了。不管怎么说,我已经纠正了拼写错误,但我仍然感到困惑。我会编辑一下这个问题,然后给你看问题。嗯,谢谢!这是什么意思!=意思是我现在就把它作为书签,以后再检查,因为我只是使用了一个硬编码的JSF来手动插入表单html…脏的,但它可以工作。它将很快被重构,尽管!=表示unescape HTML,因此它将按原样插入ruby字符串,而不会转义它。与normal=相反,normal=用于计算和转义字符串,以便安全地包含在HTML中。更多:更容易。。。使用:plain过滤器而不是:javascript。是否需要前导?您是否尝试过我的答案?如果不清楚:您在haml中使用的是erb样式的插值。但很高兴你发现了一些有用的东西。我正在尝试理解你在这里所做的事情,也对基于javascript条件中的内容呈现一些HTML感兴趣。哪里有新乘客?还有你的答案;您将此代码放置在何处?new_passenger与控制器存在于同一个视图文件夹中,因此在我的情况下,bookingscontroller将其命名为app/views/bookings
respond_to do |format|
  format.js { render :partial => "new_passenger" }
end