我对 Rails 非常陌生,因此在一起处理 AJAX、UJS 和 Rails 时遇到很多困惑。我查看了railscast,几个SO答案,尝试了freenode上的#rubyonrails IRC频道。
唉,我还是被困住了。
无论如何,这是我的问题。
所以我有两个模型,建筑和财产。财产属于_建筑物并且建筑物有_许多财产。
我已将外键添加到 Property 作为building_id。
现在,在我的建筑模型中,我有一个方法:self.search(search) 并给出正确的地址(例如 999 Decarie),它将正确从数据库中的 Building 表返回building_id。
def self.search(search)
#search.instance_variables.map {|v| "#{v}: #{search.instance_variable_get(v)}\n"}.join
if ((search.nil?) || (search == ""))
nil
else
search = search.to_s
d { search }
split = search.split(' ', 2)
stnum = split.first
d { stnum }
stname = split.last
d { stname }
Building.where("streetno = ?", stnum).where("streetname = ?", stname).pluck(:id).first
end
end
在我的属性部分_form中,我有一个form_for循环,它使用collection_select来允许用户选择任何建筑物地址(例如999 Decarie)(因此它呈现为选择/选项HTML下拉列表)。
<div class="field" id="selection">
<%= f.collection_select :buildinginfo, Building.all, :half_address, :half_address, {:label => "Building Info"}%>
</div>
那么,我该如何使用不显眼的 javascript/ajax
A. 用户在表单中选择后立即获取集合 select 的选定值,并将其传递给上面提到的建筑模型方法(self.search(search)),该方法返回正确的建筑 ID。
B. 立即获取该方法返回的建筑物 ID,并将其存储在表单上的隐藏字段中(对应于 Properties 模型中的building_id 字段)。 (在下面的代码中,我想用建筑物 ID 替换值 1)
<div class="field" id="selection_id">
<%= f.hidden_field :building_id, :value => 1 %>
</div>
因此,允许我的关联工作,这样当我删除建筑物时,它的所有相关属性也会被删除。
如果您需要更多代码,请告诉我,我正在使用 Rails 4,非常感谢!