6

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

我有一个名为 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 }) %>');
    }
  })

另外,由于我在 form_for 中,如何将@booking 变量传递给本地?它看起来真的很复杂,我打算做一些肮脏的方式,而不是只循环 20 次(最多 20 名乘客),然后根据所选的数字隐藏/显示它们。但这太脏了,你不觉得吗?

4

3 回答 3

12

要使插值工作,您需要执行类似的操作

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

这么简单的说:添加!=到行首,并在双引号之间包含字符串。

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

于 2010-08-17T09:16:26.437 回答
3

我实际上设法通过添加:

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

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

于 2011-01-25T08:11:03.597 回答
0

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

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

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

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

您收到哪些错误消息?

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

- form_for @user do |f|
  # f.object is equal to @user
于 2010-08-05T16:33:27.157 回答