質問

私はjQueryのを使用して、ネストしたフォームを作成するRailscast 197で見つけたコードを使用しています。私が直面しています課題は、ネストされたモデルはfile_field要素を使用しており、このために私はちょうど空のfile_field要素のリストを参照してください編集ビューを見たときにということです。私は新しいのビューを表示するときに、ユーザーが編集ビューが、file_fieldを見ているとき(無効text_fieldのような)何か他のものを表示するようにレールを伝えることができる方法はありますか?

これは、私が使用しています部分的です

<div class="fields">
    <p>
        <%= f.label :document_type %>
        <%= f.select :document_type, XmlDocument::SOURCES %>
    </p>
    <p>
        <%= f.file_field :inputfile, :class => 'text' %>
        <%= f.hidden_field(:_delete) + link_to('Remove', "javascript:void(0)", :class => "remove_child remove-xmldoc") %>
    </p>
</div>

これは、それを追加のjQueryである(部分を表示するときに効果を追加するRailscastからわずかに変更された):

$('form a.add_child').click(function() {
    var assoc   = $(this).attr('data-association');
    var content = $('#' + assoc + '_fields_template').html();
    var regexp  = new RegExp('new_' + assoc, 'g');
    var new_id  = new Date().getTime();

    var newElements = jQuery(content.replace(regexp, new_id)).hide();
    $(this).parent().before(newElements).prev().slideFadeToggle();

    return false;
});

しかし、私の_form内の部分、私が持っています:

<div id="xml_documents">
    <%= label_tag 'XML Documents' %>
    <% form.fields_for :xml_documents do |stream_xml_document_form| %>
    <%= render :partial => "xml_document", :locals => {:f => stream_xml_document_form} %>
    <% end %>

    <p><%= link_to('Add XML Document', "javascript:void(0)", :class => "add_child add-xmldoc", :"data-association" => :xml_documents) %></p>
    <%= new_child_fields_template(form, :xml_documents) %>
</div>
部分を追加するものである、私はどこかここで私は、オブジェクトがすでに作成されたか、またはされていない場合は、別の部分をレンダリングするためにレールを伝えるいくつかの並べ替えの条件を持っている必要があることを推測している。

..誰もが任意のアイデアを持っています私はこれを達成することができますか?

のように
役に立ちましたか?

解決

「新規」と「編集」の行動を区別するための最も簡単な方法はform.object.new_recordをチェックするのですか?これは、「新しい」アクションと「編集」アクションのための偽のためにtrueを返します。

ですから、すなわちを行うことができます。

<%= f.file_field :inputfile, :class => 'text' if f.object.new_record? %>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top