如何根据rails变量在respond_to内部进行迭代?

时间:2015-11-06 14:44:19

标签: javascript jquery ruby-on-rails

我正在寻找一种在保存新车时在表格中显示多个表格的方法。

我不知道如何使用Cars Options进行迭代以通过Cars& “汽车create.js.erb”

中的值形式的选项参数

cars.rb

def create
 ...
 if @car.save
  @fleet.options.each do |option|
   new_value = Value.new(car_id: @car.id, option_id: option.id)
   new_value.save
  @options_values << [option.id, new_value.id]
 end
 respond_to do |format|
  format.html { redirect_to edit_fleet_path(@fleet) }
  format.js
 end
...
end

每次创建汽车时,我都会尝试在表格中显示新列并显示每个现有选项(表格的行),并显示相应的价值表格。

create.js.erb

<% if @car.errors.any? %>
 $("#newCarForm").html("<%= j render 'cars/form', fleet: @fleet, car: @car %>"); // => it's ok
<% else %>
 $("#newCarForm").before("<td></td>"); // => it's ok
 $("#carTitleRow th:last-child").after("<th><%= @car.title %></td>"); // => it's ok
 $("#carUrlRow td:last-child").after("<td><%= @car.url %></td>"); // => it's ok

 // MY PROBLEM IS BELOW
 var newcell = $("<td>Hello</td>") 
 $("*[id^='optionRow-']").append(newcell);

<% end %>

每个#optionRow-XXXX XXXX都是相应选项的ID。 我在@options_values数组中有相同的ID

我希望能够为每个#optionRow-XXXX进行迭代,寻找正确的选项和价值,并将它们以参数传递给&#39; values / form&#39;最后得到类似的东西:

var newcell = $("<td><%= j render 'values/form', option: @option, value: @value %></td>")

在我的测试中,我遇到了这些问题:

  • 我知道如何使用jQuery获取optionRow id并使用rails获取option.id,但我知道我无法将js var传递给rails。
  • 我尝试使用@option_values.each但没有成功
  • 我尝试使用js while循环但没有成功

1 个答案:

答案 0 :(得分:0)

您必须使用我认为的locals对象传递这些变量。而不是

$("<td><%= j render 'values/form', option: @option, value: @value %>

DO

$("<td><%= j render 'values/form', locals: {option: @option, value: @value} %></td>")