我有一个被标记为重复的问题,但它确实没有回答我的问题,但它确实回答了我所拥有的另一个问题,这很棒:)我想也许我没有正确解释自己所以去再试一次。请记住,我对RoR还是比较新的。我之前的问题可以在这里找到:
Rails: Select on 1 field returns value to another field
所以,让我解释一下我想要再次实现的目标。我有一个名为plans的表和一个名为plan_prices的表。计划有很多计划价格。我有另一张叫合同的桌子。合同可以有计划和计划价格,因此合同表有plan_id和plan_price_id。所以这就是我想要实现的目标。当我创建合同时,我选择了返回plan_id的计划。我还在plan_price上有一个select,返回plan_price_id。第一个选择有一些JS来确定它何时发生变化,以便相应地过滤plan_price。这一切都很好。我想要做的最后一件事是当我选择plan_price时,该表上有一个名为price的列。我想取这个价格并将其默认为contract.price字段,如果用户认为有必要,可以更改。我只是很难弄清楚如果选择了plan_price,我将如何将plan_price.price值默认为contract.price字段。 contract.price字段是一个简单的免费输入字段,而不是选择字段,因为用户可以将价格更改为其他字段。
希望以上内容清楚,我希望有人可以帮助我解决这个问题。
TIA。
答案 0 :(得分:0)
在plan_price字段的onchange状态发送Ajax请求:
:onchange=>"selectPrize(this)"
您将在AJAX请求中将所选值作为参数传递
JS功能
function selectPrize(prizeID) {
var dataString ='prize='+prizeID.value;
$.ajax({
type: "GET",
url: "/your_controller/your_controller_method",
data: dataString
});
return false;
};
在您的控制器上,在所选方法中,使用您通过ajax请求获得的ID来查找计划奖金。
@plan_prize = Planprize.where("id = #{params[:prize]}").first
然后在您的文件夹中创建一个js.erb文件,具体取决于您在控制器中选择的方法并执行一些简单的javascript来更改contract_prize的值:
your_method.js.erb文件
$(document.getElementById('contract_prize').value = '<%= @plan_prize.prize %>');
这应该有用。