问题是我有一个远程表单,基于条件,id喜欢转换为非远程表单(使用UJS),然后提交.请注意表单上传了文件.
这是详细信息:我最初使用了远程表单
= form_for @myobj, :url => {:action=>"remoteAction", :controller=>"myobjects"}, :remote => true do |f|
... (f.fields....)
Run Code Online (Sandbox Code Playgroud)
它产生HTML:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" data-remote="true" action="/remoteAction">
Run Code Online (Sandbox Code Playgroud)
当我点击提交时,正如预期的那样,表单被提交为"AS JS".在控制器动作中,我正在对提交的表单中的字段进行一些验证.如果所有验证都通过,我执行以下.js.haml模板:
$('form#new_myobj').removeAttr("data-remote");
$('form#new_myobj').attr('enctype', 'multipart/form-data');
$('form#new_myobj').attr('action', '/myobjects/regularAction');
Run Code Online (Sandbox Code Playgroud)
它成功地将页面上的HTML(通过Firebug见证)更改为:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" enctype="multipart/form-data" action="/myobjects/regularAction">
Run Code Online (Sandbox Code Playgroud)
因为形式包含f.file_field,我必须提交尽可能多所以图像可以上传,我不能提交"AS JS"现在,当我点击提交,控制器行动"regularAction"确实叫,但它仍然'AS JS'
问题是,我还需要在HTML中进行哪些更改,以便可以非xhr提交表单?它与标题有关吗?
如何使用HAML模板从呈现对象ID中阻止视图中的部分表单?例如,my show.html.hamlfor Users包含=render 'shortlists'其候选名单列表:
%p
Shortlists:
= @shortlists.each do |s|
= render :partial => 'shortlists', :locals => { :s => s }
%p
Run Code Online (Sandbox Code Playgroud)
我在屏幕上看到的是:
Shortlists:
Shortlist A has 0 items
Shortlist B has 5 items
"#<Shortlist:0xa95fa38>#<Shortlist:0xa95f54c>"
Run Code Online (Sandbox Code Playgroud)
我该如何预防?
"#<Shortlist:0xa95fa38>#<Shortlist:0xa95f54c>"
Run Code Online (Sandbox Code Playgroud)
从渲染?