Rails:选择后从另一个表返回值

时间:2014-05-06 23:13:41

标签: ruby-on-rails dynamic default-value

我有一个被标记为重复的问题,但它确实没有回答我的问题,但它确实回答了我所拥有的另一个问题,这很棒:)我想也许我没有正确解释自己所以去再试一次。请记住,我对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。

1 个答案:

答案 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 %>');

这应该有用。