0

UPDATE 8/18/12: 次の質問に答えやすくする方法はありますか?

js.coffee ファイルに次のコードがあり、フォームに罫線を追加するために機能します。ただし、ロード時に最初の行を自動的に追加したいのですが、それを行う方法がわかりません...

$('form').on 'click', '.add_fields', (event) ->
 time = new Date().getTime()
 regexp = new RegExp($(this).data('id'), 'g')
 $(this).before($(this).data('fields').replace(regexp, time))
 event.preventDefault()

(これがおなじみのように見える場合は、Ryan Bates の Railscast #196 改訂版からそのまま引用したものです)

更新:@ Baldrickのアドバイスを次のように試しましたが、サイコロはまだありません:

jQuery ->
  $('form').on 'click', '.add_fields', (event) ->
    time = new Date().getTime()
    regexp = new RegExp($(this).data('id'), 'g')
    $(this).before($(this).data('fields').replace(regexp, time))
    event.preventDefault()

$(document).ready '.receive-form', (event) ->
    time = new Date().getTime()
    regexp = new RegExp($(this).data('id'), 'g')
    $(this).before($(this).data('fields').replace(regexp, time))
    event.preventDefault()

更新 2: 詳細情報は次のとおりです。

私のhtml(重要な部分):

<div class="modal-body ">
<%= @company.haves.new.warehouse_transactions.new %>
<%= form_for @company do |f| %>

  <div class="form-inline receive-form">
    <h4>Part Details:</h4>
  <%= f.fields_for :haves do |builder| %>
      <%#= render 'have_fields', f: builder %>
    <% end %>
  <%= link_to_add_fields "+", f, :haves, :warehouse_transactions %>
  </div>
</div>

have_fields:

<fieldset>
<%= f.text_field :product_title, :class => 'input-small text_field', :placeholder => "Product Title" %>
<%= f.fields_for :warehouse_transactions do |builder| %>
<%= render 'wht_fields', :f => builder %>
<% end %>
<%= f.hidden_field :_destroy %>
<%= link_to "-", '#', class: "remove_fields" %>
</fieldset>

wht_fields:

<fielset>
  <%= f.number_field :quantity, :class => 'input-small number_field', :placeholder => "Quantity" %>
  <%= f.text_field :cost, :class => 'input-small text_field', :placeholder => "Cost" %>
  <%= f.text_field :location, :class => 'input-small text_field', :placeholder => "Location" %>
  <%= f.text_field :batch, :class => 'input-small text_field', :placeholder => "Batch" %>
  <%= f.select :condition, ['Condition'] + WarehouseTransaction::CONDITIONS %>
  <%= f.hidden_field :_destroy %>
  <%= link_to "remove", '#', class: "remove_fields" %>
</fieldset>

link_to_add_fields に関連付けられた Rails ヘルパーも次のとおりです。

  def link_to_add_fields(name, f, association, child_association = nil)
    new_object = f.object.send(association).klass.new
    id = new_object.object_id
    new_object.send(child_association).new if child_association
    fields = f.fields_for(association, new_object, child_index: id) do |builder|
      render(association.to_s.singularize + "_fields", f: builder)
    end
    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
  end

この質問を小説に変えることは避けたいと思っていましたが、それは... このことを機能させるのに十分な情報であることを願っています.

4

1 に答える 1

0

ページが読み込まれると、次のコードが実行されます。

$(document).ready(function () {
  // put here code to execute on page loading
});

コードを 1 つのページでのみ実行する必要がある場合は、このページでのみ呼び出される JavaScript ファイルにコードを配置するか、メソッドにテストを追加して、必要な場合にのみコードを実行します。

于 2012-08-15T18:36:15.313 に答える