我正在开发一个简单的 Rails 应用程序供我自己使用以用于学习目的,并且我正在尝试以 1 种形式处理 2 个模型。我已经按照高级 Rails 食谱第 13 章中的示例进行了操作,并根据我自己的目的对其进行了一些简单的修改。
我拥有的 2 个模型是 Invoice 和 InvoicePhoneNumber。每个 Invoice 可以有多个 InvoicePhoneNumber。我想要做的是确保每张发票至少有 1 个与之关联的电话号码。书中的示例在每个电话号码旁边放置了一个“删除”链接(书中的任务)。我想确保最上面的电话号码旁边没有删除链接,但我不知道该怎么做。生成发票中电话号码列表每一行的部分模板如下;
<div class="invoice_phone_number">
<% new_or_existing = invoice_phone_number.new_record? ? 'new' : 'existing' %>
<% prefix = "invoice[#{new_or_existing}_invoice_phone_number_attributes][]" %>
<% fields_for prefix, invoice_phone_number do |invoice_form| -%>
<%= invoice_form.select :phone_type, %w{ home work mobile fax } %>
<%= invoice_form.text_field :phone_number %>
<%= link_to_function "remove", "$(this).up('.invoice_phone_number').remove()" %>
<% end -%>
</div>
现在,如果我可以检测到何时生成第一个电话号码,我可以在 link_to_function 上设置一个条件,这样它就不会被执行。这将解决我的问题一半并且令人满意,尽管这意味着如果我真的想删除第一个电话号码并保留第二个电话号码,我将不得不进行一些手动改组。
理想的方法可能是在浏览器中使用 javascript,但我不知道如何处理。当只有一个时,我需要隐藏“删除”链接,并在有多个时显示所有“删除”链接。“添加电话号码”链接中使用的 .insert_html 方法中的功能似乎不足以解决此问题。
我不是要求一步一步的操作方法(事实上我不想得到一个 - 我想理解这一点),但是有人对这个问题从哪里开始有一些建议吗?