2017-05-30 50 views
0

我的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_taglink_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 

任何人都可以提出什麼可能導致第二個沒有達到預期效果?

+0

您是否嘗試過'的form_tag apply_tag_applications_path,方法:後,數據:{遠程:真正}'? –

+0

使用'data:{remote:true}'而不是普通的'remote:true'仍然沒有解決這個問題,但是我注意到使用你的建議呈現的HTML('data:{remote:true}')導致帶有真實性標記的隱藏字段被添加到表單中。我沒有看到這個隱藏的領域的代碼,根據我上面的排隊。 –

+0

張貼您的路線和控制器代碼,以及顯示相應的js文件的名稱(應該是無論控制器的行動名稱是什麼is.js.erb) – the12

回答

0

確認您在佈局或資產中引用了jquery_ujs文件。

#application.html.erb 
<%= javascript_include_tag :jquery, :jquery_ujs %> 

#assets/javascripts/application.js 
require jquery.js 
require jquery_ujs 

此外,遠程選項將只適用於傳遞對象而不是路徑form_for。

這將工作

<%= form_for @apply_tag, remote: true, method: :post do |f| %> 
    <%= f.submit "FORM TAG SUBMIT" %> 
<% end %> 
+0

是的,我可以驗證這兩個引用是否到位(編輯問題以反映這一點)。 –

+0

我編輯了答案。基本上,當你傳遞一個對象而不是一個路徑時,遠程選項將起作用。或者你也可以使用url選項發送。 –

+0

對不起,這仍然不起作用。以HTML格式收到請求: '在2017-05-30 11:52:23 -0400處啓動POST「/ tag_applications」:: '通過TagApplicationsController處理#以HTML創建# –

相關問題