true do |t| t.string "suppliers_code" t.datetime "-6ren">
gpt4 book ai didi

javascript - Ruby on Rails - jQuery 使用 AJAX 获取数据

转载 作者:行者123 更新时间:2023-11-30 09:07:06 26 4
gpt4 key购买 nike

我有以下模型:

create_table "mouldings", :force => true do |t|
t.string "suppliers_code"
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
t.integer "supplier_id"
t.decimal "length", :precision => 3, :scale => 2
t.decimal "cost", :precision => 4, :scale => 2
t.integer "width"
t.integer "depth"
end

当用户在表单上选择模具时,我想通过 ajax 获取模具的成本,并使用它来获取使用 javascript 生成的报价。这是表单中的选择标签:

<select id="order_item_moulding_1_id" name="order_item_moulding_1[id]">
<option value="">Select a moulding 1</option>
<option value="1">123 589 698</option>
<option value="2">897 896 887</option>
<option value="3">876 234 567</option>
</select>

这是 javascript 文件的一部分:

$(document).ready(function () {

$('#order_item_moulding_1_id').change(function () {
var moulding_1_price = ;
});

});

如何使用 Ajax 设置变量 moulding_1_price?

最佳答案

如果您想通过 ajax 在您的 Rails Controller 中执行此操作,您只需将每个选项的值设置为您要查找的模具的 ID,然后使用 jQuery 的 ajax 方法将其发送到您的 Controller :

 var theVal = $('#order_item_moulding_1_id').val();
var theURL = '/someUniqueRoutingKeywordSuchAsMouldingAjax/' + theVal;


$.ajax({
url: theURL

});

然后确保在 routes.rb 文件中设置了路由:

 match 'someUniqueRoutingKeywordSuchAsMouldingAjax/:id', :to => 'yourMouldingsController#ajaxMouldings'

然后在您的 MouldingsController 中,定义一个自定义方法:

def ajaxMouldings
@moulding = Moulding.find(params[:id])

end

默认情况下,这将呈现 ajaxMouldings.js.erb。因此,在您看来,请确保您有一个具有该名称的文件。这是嵌入式 javascript,因此您可以使用它来替换页面上您希望显示该信息的某些 div:

// in ajaxMouldings.js.erb
// be sure to escape any dynamic values!
alert('Hey, it worked!');

var theHTML = '<div class="moulding_title"><%= escape_javascript(@moulding.title) %></div><div class="moulding info"><%= escape_javascript(@moulding.info) %></div>';

$('#someUniqueDiv').html(theHTML);

显然,您需要采取一些保护措施来防止不良数据等...但这应该能让您走上正轨。

关于javascript - Ruby on Rails - jQuery 使用 AJAX 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4305378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com