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

How to iterate inside respond_to according to rails variables?

本文关键字:内部 to 迭代 respons 何根 rails 变量      更新时间:2023-09-26

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

我不知道如何通过Cars&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,寻找正确的选项和值,将它们以params形式传递给"values/form",最后得到这样的东西:

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循环,但没有成功

我认为您必须将这些变量与locals对象一起传递。所以不是

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

进行

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