2010-08-07 68 views
1

我有一個使用標籤的手工按鈕的遠程窗體。我在表單標記中使用data-remote = true,但我不知道如何使用鏈接標記在表單提交中發佈表單數據。當我用數據方法使用data-remote時,它會創建一個帶有空參數的遠程調用,所以我不會將submit()函數調用到我的表單中。使用標籤在Rails 3中提交的遠程窗體

我的形式是:

<form accept-charset="UTF-8" action="/tasks" data-remote="true" method="post"> 

,並在表單標籤我的鏈接標籤是:

它創建空POST參數的遠程調用:

<a class='minibutton' data-remote='create' href='/tasks/create' data-method='post'> 

它不發送任何POST信息,只有標題:

<a class='minibutton' data-remote='create' href='/tasks/create'> 

如何調用優雅的表單的submit()方法?我想我不需要創建JavaScript黑客來使它工作。我呢?

回答

2

我想這兒有2種方法可以解決這個問題:

1. 我看你使用了一個名爲您的鏈接「minibutton」類,這表明你想讓它看起來像一個按鈕反正。因此,而不是鏈接(或<input type="submit">標籤),使用該按鈕標記您的表格內:

<button type="submit" value="Submit"> 

和風格是根據自己的喜好使用CSS。你甚至可以在它們上面使用圖標。查看this blog post瞭解詳細信息,並準備好使用CSS代碼塊。

2. 如果你仍然想使用鏈接,你可以在鏈接和表單上設置「id」屬性,並添加一個click事件觀察者來提交表單。你使用的原型 假設,把這樣的事情放到頁面的頭部:

<%= javascript_tag do %> 
    $('YOUR-LINK-ID').observe(
     'click', 
     function(el, value) { 
      $('YOUR-FORM-ID').request({ 
      onSuccess: function(response) {eval(response)} 
      }) 
     } 
    ); 
<% end %> 

這是假設你的迴應內容類型的文本/ JavaScript的。如果不是,則必須使用onSuccess和/或onComplete回調來將響應內容替換爲頁面的一部分。

有關觀察和提交表格的詳細信息,請參閱有關Form.requestEvent.observe的文檔。

This question也可能有幫助。

+0

感謝您的回覆,目前我正在觀察onclick信號,並在點擊事件發生時進行submit()。你的第一個解決方案聽起來不錯,更好,因爲當搜索機器人試圖檢查鏈接時,我不需要處理這種情況。我對按鈕的問題是在IE和Safari中的定製,但是當我看起來效果很好時。謝謝! – Nucc 2010-10-02 13:53:45

相關問題