我的Rails应用程序使用UJS在各处提交表单,但由于某种原因,我无法在此处使用它。Rails“remote:true”适用于link_to,不适用于form_tag
我确信我有UJS正确设置(因为它在其他地方工作):
#application.html.erb
<%= javascript_include_tag 'application' %>
#assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
在我看来,我同时拥有form_tag
和link_to
,均设置为remote: true
:
<%= form_tag apply_tag_applications_path, remote: true, method: :post do %>
<%= submit_tag "FORM TAG SUBMIT" %>
<% end %>
<%= link_to apply_tag_applications_path, remote: true, method: :post do %>
<h1>LINK TO SUBMIT</h1>
<% end %>
点击link_to
按预期工作(请求格式是JS):
Started POST "/tag_applications/apply" for ::1 at 2017-05-30 11:10:51 -0400
Processing by TagApplicationsController#apply as JS
但是通过点击HTML的form_tag
的提交:
Started POST "/tag_applications/apply" for ::1 at 2017-05-30 11:11:02 -0400
Processing by TagApplicationsController#apply as HTML
任何人都可以提出什么可能导致第二个没有达到预期效果?
您是否尝试过'的form_tag apply_tag_applications_path,方法:后,数据:{远程:真正}'? –
使用'data:{remote:true}'而不是普通的'remote:true'仍然没有解决这个问题,但是我注意到使用你的建议呈现的HTML('data:{remote:true}')导致带有真实性标记的隐藏字段被添加到表单中。我没有看到这个隐藏的领域的代码,根据我上面的排队。 –
张贴您的路线和控制器代码,以及显示相应的js文件的名称(应该是无论控制器的行动名称是什么is.js.erb) – the12