2012-06-06 71 views
0

我正在開發Rails 3.0.3並使用jQuery。這是我的javascipt的包括標籤:爲什麼我的表單被處理爲HTML請求而不是JS?

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", "rails.js" %> 

我想在一個下拉的變化發送JS請求,並寫了下面的代碼這樣做。這種形式並沒有得到處理的JS,但得到處理爲HTML請求,而不是:

<% form_tag(aggregatedata_path, :method=>'post', :id => "dd-container", :remote => true) do %> 
    <%= select_tag( 
     :group, 
     options_for_select(groups_list, @group), 
     { 
      :id => "dd", 
      :onchange => "this.form.submit();" 
     }) %> 
<% end %> 

我讀了SO類似的帖子,暗示這個問題是JS庫,但除非有沒有其他辦法,我'寧願避免在這一點上改變這種情況,以免其他一些事情破裂。我有另一個表單,作爲JS請求處理就好了。那就是:

<% form_tag(poweroutput_path, :method=>'post', :id => "date-form", :remote => true) do %> 
    <%= text_field_tag(
     'dt', nil, 
     { 
      :id => 'date-field', 
      :class => 'dateformat-d-dt-m-dt-Y', 
      :value => Time.now.getlocal.strftime("%d.%m.%Y")    
     }) %> 
    <%= submit_tag " ", :id => "go-button" %> 
<% end %> 

唯一明顯的區別我看到的是第一個使用:onchange => "this.form.submit();"而第二個則沒有。在那個函數中有什麼東西會覆蓋我以前的:remote => true

回答

1

我同意戴夫。既然你已經使用jQuery,我會像這樣的東西去:

$('#dd-container').change(function(){ 
    $.ajax({ 
    type: "POST", 
    url: your_path, 
    data: $(this).find('option:selected').attr('value'), 
    success: function(response) { 
     console.log(response); 
    } 
    }); 
}); 

哦,別忘了從表單中刪除:onchange => "this.form.submit();", :remote => true

+0

非常感謝!我對這一切都很陌生,並且主要是使用爲我做所有工作的鐵軌助手,但讓我想知道發生了什麼。像這樣的例子真的很有幫助! – pitachip

1

先打我得到的,當我搜索「Rails 3的遠程表」拉起此鏈接:

http://www.alfajango.com/blog/rails-3-remote-links-and-forms/

它解釋了它的第一套要點討論什麼:remote => true做:

  1. 它找到遠程鏈接,表單和輸入,並重寫它們的點擊事件以通過AJAX提交給服務器。

由於您手動提交表單,我認爲任何點擊處理程序都被繞過。

+0

非常感謝您花時間回覆!現在明白爲什麼這不起作用了! – pitachip

相關問題