2010-05-02 51 views
5

我現在有這樣一種形式:的form_for使用JSON回報

<% form_for @stem, :html => {:multipart => true} do |f| %> 
<%= f.file_field :sound %> 
<% end %> 

此輸出(基本):

<form method="post" id="new_stem" class="new_stem" action="/stems"> 
<input type="file" size="30" name="stem[sound]" id="stem_sound"> 
</form> 

不過我打算在這裏使用jQuery的給ajaxForm插件和希望新詞幹以JSON格式返回。我知道如果表單的動作是「/stems.json」,這會起作用,但是有沒有一個參數可以放入form_for調用中,讓它返回JSON?

我試着做

<% form_for @stem, :html => {:multipart => true, :action => '/stems.json'} do |f| %> 

,但這似乎沒有工作。

回答

2
<% form_for @stem, :html => {:multipart => true}, :url => "/stems.json" do |f| %> 
blublublub 
<% end %> 

解決問題

9

更清潔:

<% form_for @stem, :html => {:multipart => true}, :url => stems_path(:format => "json") do |f| %> 
    blublublub 
<% end %> 
+0

我upvoted你的答案特別是因爲一些未知的原因,當我嘗試使用form_tag將數據類型設置爲'html',例如:'form_for(@example,:remote => true,:html => {:'data-type'=>'html'})',它d id不工作,當我真正想要「** Processing by ExampleController#index as HTML **」時,我的記錄器報告「** ExampleController#index處理爲*/***」。您的解決方案正確評估:'<%= form_tag examples_path(:format =>'html'),:method =>:get,:remote => true%>' – mkralla11 2013-08-13 19:09:26

12

只要指定的數據類型:

= form_for(@stemp, :remote => true, :html => {:'data-type' => 'json', :multipart => true})