Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用文件\字段元素的Rails嵌套表单_Jquery_Ruby On Rails_Partial Views_Nested Forms - Fatal编程技术网

Jquery 使用文件\字段元素的Rails嵌套表单

Jquery 使用文件\字段元素的Rails嵌套表单,jquery,ruby-on-rails,partial-views,nested-forms,Jquery,Ruby On Rails,Partial Views,Nested Forms,我正在使用RailsCast197上的代码使用jQuery创建嵌套表单。我面临的挑战是嵌套模型使用文件字段元素,因此在查看编辑视图时,我只看到一个空文件字段元素列表。当用户查看编辑视图时,我是否可以告诉rails显示其他内容(如禁用的文本字段),但在查看新视图时显示文件字段 这是我正在使用的部分: <div class="fields"> <p> <%= f.label :document_type %> <%=

我正在使用RailsCast197上的代码使用jQuery创建嵌套表单。我面临的挑战是嵌套模型使用文件字段元素,因此在查看编辑视图时,我只看到一个空文件字段元素列表。当用户查看编辑视图时,我是否可以告诉rails显示其他内容(如禁用的文本字段),但在查看新视图时显示文件字段

这是我正在使用的部分:

<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>
但在我的表格中,我有:

<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>

“xml\u文档”,:locals=>{:f=>stream\u xml\u文档\u form}%>
“添加子添加xmldoc”,:“数据关联”=>:xml\u文档)%>


这就是添加部分的原因,我猜在这里的某个地方,我需要一个某种条件,告诉rails如果对象已经创建或没有创建,则呈现不同的部分。。有人对我如何完成这一点有什么想法吗?

区分“新建”和“编辑”操作的最简单方法是检查form.object.new\u记录?这将为“新建”操作返回true,为“编辑”操作返回false

所以你可以这样做

<%= f.file_field :inputfile, :class => 'text' if f.object.new_record? %>
如果f.object.new\u记录为“text”?%

我忙得不可开交,让我看看我能不能让它发挥作用,什么是“object”,rails知道这是什么还是你引用了我所说的任何对象。如果你使用form_作为助手,即“form_代表@post do | form |”,那么你可以通过调用“form.object”来访问@post对象。对不起,我花了这么长时间才找到你的解决方案,谢谢你的帮助!
<%= f.file_field :inputfile, :class => 'text' if f.object.new_record? %>