Ruby on rails 需要帮助修改来自advanced rails recipes book的多个模型示例吗

Ruby on rails 需要帮助修改来自advanced rails recipes book的多个模型示例吗,ruby-on-rails,forms,nested-forms,Ruby On Rails,Forms,Nested Forms,我正在开发一个简单的rails应用程序,用于我自己的学习目的,我正在尝试以一种形式处理两个模型。我遵循了Advanced Rails Recipes第13章中的示例,并为自己的目的对其进行了一些简单的修改 我有两个型号是Invoice和InvoicePhoneNumber。每张发票可以有多个InvoicePhoneNumber。我想做的是确保每张发票至少有一个与其关联的电话号码。书中的示例在每个电话号码(书中的任务)旁边放置了一个“删除”链接。我想确保排名靠前的电话号码旁边没有删除链接,但我不知

我正在开发一个简单的rails应用程序,用于我自己的学习目的,我正在尝试以一种形式处理两个模型。我遵循了Advanced Rails Recipes第13章中的示例,并为自己的目的对其进行了一些简单的修改

我有两个型号是Invoice和InvoicePhoneNumber。每张发票可以有多个InvoicePhoneNumber。我想做的是确保每张发票至少有一个与其关联的电话号码。书中的示例在每个电话号码(书中的任务)旁边放置了一个“删除”链接。我想确保排名靠前的电话号码旁边没有删除链接,但我不知道怎么做。生成发票中电话号码列表的每一行的部分模板如下:

<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_函数上设置一个条件,这样它就不会被执行。这可以解决我一半的问题,而且会令人满意,尽管这意味着,如果我真的想删除第一个电话号码,保留第二个,我将不得不进行一些手动洗牌

实现这一点的理想方法大概是在浏览器中使用javascript,但我不知道如何实现这一点。当只有一个链接时,我需要隐藏“删除”链接;当有多个链接时,我需要显示所有“删除”链接。“添加电话号码”链接中使用的.insert_html方法中的功能似乎不足以实现此目的


我不是在要求一步一步地解决这个问题(事实上,我不希望得到一个——我想了解这一点),但是有人对从何处开始解决这个问题有一些建议吗?

对于检测行是否是第一行的问题,您可以在调用partial时添加一个局部变量:

<%= render :partial => 'mypartial', :locals => {:first => true}  %>
'mypartial',:locals=>{:first=>true}%>
因为在主文件中更容易检测,所以我猜一行是否是第一行


除了检测电话号码是否是第一个外,您还可以检测电话号码是否是唯一的一个。如果没有,请在所有数字旁边添加删除链接,否则,不要显示删除链接。请注意,除了显示/隐藏链接外,您还需要添加代码,以防止通过(mis)使用URL直接删除最后一个数字而不是使用表单来删除该数字。

对于检测行是否为第一行的问题,您可以在调用分部时添加局部变量:

<%= render :partial => 'mypartial', :locals => {:first => true}  %>
'mypartial',:locals=>{:first=>true}%>
因为在主文件中更容易检测,所以我猜一行是否是第一行

除了检测电话号码是否是第一个外,您还可以检测电话号码是否是唯一的一个。如果没有,请在所有数字旁边添加删除链接,否则,不要显示删除链接。请注意,除了显示/隐藏链接外,您还需要添加代码,以防止(mis)使用URL直接删除最后一个号码,而不是使用您的表单。

“广告”:集合=>@advisions%>
这个 将呈现“广告客户/_ad.erb”和 将局部变量ad传递给 用于显示的模板。迭代 计数器将自动生成 可用于具有名称的模板 部分名称计数器的形式In 在上述示例的情况下 模板将被送入
ad\u计数器

“广告”:集合=>@advisions%>
这个 将呈现“广告客户/_ad.erb”和 将局部变量ad传递给 用于显示的模板。迭代 计数器将自动生成 可用于具有名称的模板 部分名称计数器的形式In 在上述示例的情况下 模板将被送入
ad\u计数器


谢谢,只要稍微摆弄一下,我就可以用了。看起来这是一种非常有用的技术,我可以在其他地方使用。对于我的问题来说,这是一个很好的临时解决方案,但并没有解决第一个电话号码无法删除的问题(我觉得这是javascript需要解决的问题)。不过谢谢。谢谢,只要稍微摆弄一下,我就可以用了。看起来这是一种非常有用的技术,我可以在其他地方使用。对于我的问题来说,这是一个很好的临时解决方案,但并没有解决第一个电话号码无法删除的问题(我觉得这是javascript需要解决的问题)。谢谢你。