在我的应用我有下面的代码模式:变化范围(Rails的3.2,jQuery的)
.modal-body
.row
.col-sm-4
.btn-group-vertical#gear-buttons-list
- Gear.all.each do |gear|
.btn.btn-large.btn-default.gear-button{"data-id" => gear.id} #{gear.name} ($#{gear.charge})
我提出有名称按钮列表收取一块齿轮供用户选择。然而,在页面的其他地方有一个下拉栏,让用户选择一个类别。在我的应用程序,一个类别的has_many齿轮,和我想的模式,以仅显示与已经选择的类别相关联的齿轮,如以下作用域在Gear.rb定义:
scope :moving, -> { where(category_id: 1) }
是有一种直接的方式来编码模式中的.each循环,以便根据所选的类别动态限制其范围。
这是我在jobs.js
尝试(将其更改为jobs.js.erb
后):
if($('#job_category_id').length > 0) {
$('#job_category_id').change(function() {
var categoryID = $(this).val();
var categoryName = _categories[categoryID].name;
$("#gear-buttons-list").html(""); // clear default buttons
$("#gear-buttons-list") // append new buttons
.append("<% Gear." + categoryName + ".each do |gear| %><div class='btn btn-large btn-default gear-button' "data-id" => gear.id><%= #{gear.name} %></div><% end %>");
});
这是不行的,显然是因为我试图做字符串连接在嵌入的Ruby的方式(获得syntax error, unexpected tSTRING_BEG
错误)。也许有人可能用这个指向我的正确方向?
什么是“明显”是每个开发者不同,因为我们每个人都有不同数量的知识和经验。无论如何,事实证明,我可以使用Ajax来避免每次更改类别时更新页面(除了我们之外,对于许多人来说,这可能是“显而易见”的;))。 – sixty4bit 2014-10-02 04:03:12