当文本字段填充多对多表单时,Rails 3.2 Ajax 更新 Div

Posted

技术标签:

【中文标题】当文本字段填充多对多表单时,Rails 3.2 Ajax 更新 Div【英文标题】:Rails 3.2 Ajax Update Div when Text Field Populated Many to Many Form 【发布时间】:2012-06-24 22:04:36 【问题描述】:

最后,我想要一个将 client_id 传递给部分的文本字段。我想异步执行此操作,以便在更新文本字段值时,shipping_products 部分会动态更改。最好的方法是什么?

在 index.html.erb 中

<!-- Text Field Here-->
<div id="available_products">
  <%= render "shipment_products" %>
</div>

在 _shipment_products.html.erb 中

<div id="shipment_products_container">
  <h3>Assign Products to Ship<\h3>
  <ul class="shipment_products" id="shipment_products">
    <% Product.by_client(client_id).each do |product|%>  <!-- TextField value passed here -->
      <%= content_tag_for :li, product, :value => product.id do %>
        <%= hidden_field_tag("shipment[product_ids][]", product.id) %>
        <%= product.product_name %>
      <% end %>
    <% end %>
  <\ul>
</div>

模型关系:

Models and Relationships
  Shipment  has_many :products :through => :shipment_products
  Product   has_many :shipments :through => :shipment_products
  ShipmentProducts belongs_to :shipment,  belongs_to :product
  Product belongs_to :client
  Client has_many :products

这和我最终想要的差不多。

【问题讨论】:

【参考方案1】:

由于我不知道您的控制器中有什么以及如何制作路线,因此我提出了一些建议。把一些东西改成实际的。我假设您不需要更改index 操作(如果只是添加respond_to js)

index.html.erb

<%= form_tag shipment_path, remote: true do %> - points to index action
  <%= text_field_tag :client_id %>
  <%= submit_tag :load %>
<% end %>
<div id="available_products">
  <%= render "shipment_products" %>
</div>

index.js.erb

$('#available_products').html("<%= j render "shipment_products" %>");

【讨论】:

如何将客户端 id text_field 的值传递给部分中的 by_clients 方法?如果说 jQuery 模糊事件,我该怎么做? 1.在您的控制器中index 操作:@client = Client.find(params[:client_id])。现在,您可以在您的部分中使用 @client E.g. Product.by_client(@client.id)。 2.$('.my-super-form').submit();【参考方案2】:

我认为您应该为此使用嵌套模型概念,请参考-

http://railscasts.com/episodes/197-nested-model-form-part-2?view=asciicast

【讨论】:

我终于想通了。由于赏金明天结束,我将成为一个好公民并奖励你赏金。给你一个提升的代表。你的答案比另一个答案好。

以上是关于当文本字段填充多对多表单时,Rails 3.2 Ajax 更新 Div的主要内容,如果未能解决你的问题,请参考以下文章

多对多字段的 Django 表单上的逗号分隔文本而不是多项选择

如何在 Rails 4.2 中为多对多关联创建表单

如何根据 Rails 中的其他对象验证多对多关联?

如何在 Rails 4 中为多对多关联制作带有子表单的表单?

如何在 Ruby on Rails 中管理嵌套字段的多对多关系

如何在 Rails 中为多对多关系(和中间表)做一个选择字段?